簡體   English   中英

有沒有辦法從C#應用程序調用非托管(不是COM)dll?

[英]Is there a way to call an unmanaged (not COM) dll from C# application?

有沒有辦法在我的C#應用​​程序中使用(引用)用非托管C ++(不是COM庫)編寫的DLL?

當我嘗試從Visual Studio中引用它時,出現“不是COM對象”錯誤消息。

也許有某種translator \\ router可以修改我的DLL參考? 我不知道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);

請參閱MSDN上的“使用非托管DLL函數 ”主題:

http://msdn.microsoft.com/zh-CN/library/26thfadc.aspx

無需添加任何COM代理,.NET可以使用[DllImport]屬性直接使用DLL。 您還可以通過指定其他屬性來完全控制.NET和非托管DLL之間的編組。

喬已經回答了這個問題,所以我要繼續解決這個問題-為節省時間,而不必深入研究和破壞函數簽名,P / Invoke具有相當完整的Win32簽名庫,以Wiki的形式提供和一個Visual Studio插件!

P / Invoke簽出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM