2009-08-19 4 views
1

저는 C# 프로그래머이고 Native로 소개하지 않습니다. 내 프로젝트에이 DLL을 사용하는 기본 DLL이 &이지만 형식의 일부가 관리되는 코드에서 실용적이지 못하기 때문에 발생합니다. 네이티브 (C++)로 DLL을 준비하고 이벤트가 발생하면 내 관리 코드를 인식해야합니다. 어떻게해야합니까?네이티브 DLL 만들기

답변

1

네이티브 DLL의 API를 사용하면 이벤트가 발생할 때 호출 할 콜백 함수 포인터를 등록 할 수 있으므로 일반 C# 델리게이트를 함수 포인터 (Marshal.GetFunctionPointerForDelegate)로 마샬링하고 다음을 통해 관리되는 대리인을 등록하면됩니다. P/Invoke.

1

C# 코드에서 네이티브 이벤트를 처리하려면 가장 좋은 방법은 C++ 네이티브 DLL과 C# DLL 사이의 중간 계층으로 작동하는 C++/CLI DLL을 작성하는 것입니다. 이렇게하면 중간 라이브러리의 이벤트를 처리하고이를 전달하여 관리되는 DLL에서 다시 캡처 할 수 있습니다.

또 다른 옵션은 네이티브 DLL을 COM DLL로 작성하고 거기에서 COM Dispatch Events를 발생시키는 것입니다. 이 COM DLL Interop을 작성하면 C# DLL에서 직접 이벤트를 캡처 할 수 있습니다. 그러나 COM 프로그래밍을 처음 접한다면이 경로는 매우 가파른 학습 곡선을 갖습니다.

관련 문제