2009-08-28 82 views

回答

1

您可以通過所謂的P/Invoke調用(「平臺調用」)使用「普通」C-API。這包括Windows API和導出普通函數調用的其他庫。但是,我不知道返回對象的C++ DLL。這可能會更難......?

在Windows上,您始終可以通過可以註冊爲COM庫的方式創建.NET DLL。然後,您可以像使用任何支持使用COM對象的語言(例如VB6,Delphi,C++等)的任何其他COM對象一樣使用公開的.NET類。

但是,這似乎不適用於Windows Mobile!

所以: 使用C-API的C#中的任何平臺上 - 是的,沒有問題,學習如何的P/Invoke在Windows 在C++中使用C#DLL的 - 是的,需要創建COM從C對象 使用C#的DLL ++在Windows Mobile上 - AFAIK不起作用

1

如果您有一個帶有導出C函數的本地DLL,您可以通過P/Invoke機制輕鬆使用它們。

但是,C++類相當困難,而且很容易出錯,從C++中使用。爲此,在C++/CLI中編寫託管程序集包裝器會更好。這將生成一個.NET程序集,您可以從C#中使用該程序集,並且可以像使用常規C++項目一樣使用C++庫。

2

當我第一次開始使用P/Invoke機制時,我發現看例子確實有幫助。結果發現,「P/Invoking」許多Win32 C-API函數描述於pinvoke.net