0

C#アプリケーションでアンマネージC ++(COMライブラリではない)で記述されたDLLを使用(参照)する方法はありますか?

Visual Studio内から参照しようとすると、「COMオブジェクトではありません」というエラーメッセージが表示されます。

たぶん、DLL参照をCOM化するある種のtranslator \ routerがありますか?COMとCOMの相互運用機能がどのように機能するかはわかりません。プログラミングを開始したのは、これがすでに不要だったからです。

ありがとうございました。

4

3 に答える 3

7

DllImport属性を使用する必要があります。Win32PostMessage関数の例を次に示します。

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool PostMessage(IntPtr handle, int message, IntPtr wparam, IntPtr lparam);
于 2009-01-24T13:56:25.810 に答える
5

MSDNの「アンマネージDLL関数の使用」トピックを参照してください。

http://msdn.microsoft.com/en-us/library/26thfadc.aspx

COMプロキシを追加する必要はありません。.NETは[DllImport]属性を使用してDLLを直接使用できます。また、追加の属性を指定することにより、.NETとアンマネージDLL間のマーシャリングを完全に制御できます。

于 2009-01-24T13:54:02.553 に答える
2

Joe はすでにこれに答えているので、私はこれに追加します - 時間を節約し、関数のシグネチャを掘り下げてマングルする必要がないようにするために、P/Invoke には Win32 シグネチャのかなり完全なライブラリがあり、両方の wiki の形式になっていますそして、Visual Studio プラグイン!

P/Invokeで確認してください

于 2009-01-29T12:05:04.113 に答える