C#アプリケーションからアンマネージド(COMではない)dllを呼び出す方法はありますか?
-
19-08-2019 - |
質問
C#アプリケーションで(COMライブラリではなく)アンマネージC ++で記述されたDLLを使用(参照)する方法はありますか?
Visual Studio内から参照しようとすると、「COMオブジェクトではありません」というエラーメッセージが表示されます。
おそらく、DLL参照をCOMifyするようなトランスレータ\ルーターのようなものがありますか? COMとCOM相互運用機能がどのように機能するのかはわかりません。プログラミングを始めたのは、これが既に私にとって不要だったからです。
ありがとう。
解決
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);
他のヒント
<!> quot; アンマネージDLL関数の使用 <!> quot; MSDNのトピック:
http://msdn.microsoft.com/en-us/library /26thfadc.aspx
COMプロキシを追加する必要はありません。.NETは [DllImport] 属性を使用してDLLを直接使用できます。また、追加の属性を指定することにより、.NETとアンマネージDLL間のマーシャリングを完全に制御できます。
Joeはすでにこれに答えているので、これに取り組むつもりです。時間を節約し、関数のシグネチャを掘り起こしたり壊したりする必要がないように、P / InvokeにはWin32シグネチャのかなり完全なライブラリがあります。 wikiとVisual Studioプラグインの両方!
で確認してください。所属していません StackOverflow