C# 응용 프로그램에서 관리되지 않은 (Com이 아님)를 호출하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/476043

문제

내 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/호출

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top