C# 응용 프로그램에서 관리되지 않은 (Com이 아님)를 호출하는 방법이 있습니까?
-
19-08-2019 - |
문제
내 C# 응용 프로그램에서 관리되지 않는 C ++ (COM 라이브러리가 아님)로 작성된 DLL을 사용하는 방법이 있습니까?
Visual Studio 내에서 참조하려고하면 'COM 개체가 아님'오류 메시지가 나타납니다.
어쩌면 내 DLL 참조를 결합 할 번역기 라우터가 있을까요? 나는 이것이 이미 불필요 할 때 프로그래밍을 시작했기 때문에 COM과 COM Interop의 작동 방식에 대한 단서가 없습니다.
고맙습니다.
해결책
dllimport 속성을 사용해야합니다. 다음은 Win32 Postmessage 기능의 예입니다.
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool PostMessage(IntPtr handle, int message, IntPtr wparam, IntPtr lparam);
다른 팁
보다 "관리되지 않는 DLL 기능을 소비합니다"MSDN의 주제 :
http://msdn.microsoft.com/en-us/library/26thfadc.aspx
com 프록시를 추가 할 필요가 없으며 .NET은 dllimport 기인하다. 또한 추가 속성을 지정하여 .NET과 관리되지 않는 DLL 사이의 마샬링을 완전히 제어 할 수 있습니다.
Joe는 이미 이것에 대답했습니다. 그래서 나는 이것을 다루겠습니다 - 시간을 절약하고 발굴 및 Mangle 기능 서명이 필요하지 않기 위해 P/Invoke는 WIKI의 형태로 Win32 서명의 아주 완전한 라이브러리를 가지고 있습니다. 그리고 Visual Studio 플러그인!
확인하십시오 p/호출
제휴하지 않습니다 StackOverflow