我有一個C++項目。我承認我是一個完整的C++中的ZERO。但仍然需要編寫一個C++ .net包裝器,以便可以使用它的非託管C++庫。所以我有: 1)非託管項目的頭文件。 2)非託管項目的庫(.dll和.lib的) 3)一個空的C++ .NET項目,我打算用它作爲我的c#應用程序的包裝創建簡單的C++ .net包裝。一步一步
我該如何啓動?我甚至不知道如何設置對非託管庫的引用。
S.O.S.
我有一個C++項目。我承認我是一個完整的C++中的ZERO。但仍然需要編寫一個C++ .net包裝器,以便可以使用它的非託管C++庫。所以我有: 1)非託管項目的頭文件。 2)非託管項目的庫(.dll和.lib的) 3)一個空的C++ .NET項目,我打算用它作爲我的c#應用程序的包裝創建簡單的C++ .net包裝。一步一步
我該如何啓動?我甚至不知道如何設置對非託管庫的引用。
S.O.S.
http://www.codeproject.com/KB/mcpp/quickcppcli.aspx#A8
這是一般方向。您需要創建C++/CLI類庫項目,添加.NET類(本例中爲StudentWrapper),創建非託管類實例作爲託管類成員,幷包裝每個非託管類函數。使用鏈接器依賴項列表將非託管庫添加到C++/CLI項目中,而不是作爲參考。在項目 - 屬性 - 鏈接器打開附加依賴項並在其中添加.lib名稱。
注意:因爲我們正在討論C++/CLI包裝器,所以沒有PInvoke! PInvoke用於調用導出的函數(API),而不是類。
C++/CLI實際上是隱式的P/Invoke,所以它仍然是P/Invoke。 http://msdn.microsoft.com/en-us/library/2x8kf7zx.aspx,你也可以使用P/Invoke來調用C++類,只需要做一些額外的工作。 – xInterop 2013-04-23 03:47:41
這裏是另一篇關於[codeproject(link)]的文章(http://www.codeproject.com/Articles/651516/Exposing-native-to-managed-Cplusplus-CLI-vs-P-Invo)。介紹P/Invoke和C++/CLI。信貸到 Shmuel Zang。 – 2016-07-07 17:28:40
+1對於聽起來絕望和無知,因爲我在完全相同的情況下:) – 2014-09-11 09:24:43