2013-01-04 25 views
1

我有吸引我的功能的C++源代碼。構建原生C++,用作.net庫

爲了從.net應用程序引用此代碼或將此代碼構建爲.net程序集(最好是c#),需要付出哪些努力/工作?

這是我第一次嘗試移植代碼,所以請一步步地爲我分解答案。

+0

把它放到一個DLL和P /調用它。 – chris

+1

我從來沒有使用Visual C++的.NET支持,但據我所知,你可以創建一個.NET類,它在內部使用本地代碼,完全無縫地和大約0努力(這也避免了必須使用顯式的p /從例如c#調用)。如果我有時間,我會啓動視覺工作室,只是*嘗試*它。你試過了嗎? –

+0

@ Cheersandhth.-Alf,就我所知,C++/CLI就是這種情況。 – chris

回答

5

有幾種方法可以做到這一點。

  1. 的PInvoke
  2. 創建圍繞你的C C++/CLI包裝++本機代碼(使靜態庫出來的C++本地代碼)和C++/CLI生成組件可在.NET應用程序可以容易地利用。
  3. COM,即使用互操作(這是很難的所有選項中)

在我的建議最簡單的方法是使用選項2,但你需要採取適當的編組的照顧。

+0

只需一個註釋 - p invoke如果您希望不使用COM的基於oo的類的使用情況,請使用NASTY來處理。在這種情況下,強烈推薦CLI C++包裝器。 – JerKimball

+1

是否有可用的應用程序自動P /調用給定C++ DLL中的所有可用方法? – c0D3l0g1c

+0

c0D3I0g1c,這實際上是一個很好的問題..請讓我們知道鏈接或答案,如果你張貼在計算器上。 –

3

解決方案A:

  1. 如果你的源代碼,然後編譯CPP程序作爲一個DLL文件。
  2. Use P/Invoke

溶液B(如果你想要的功能在靜態庫):

  1. 創建一個存根函數調用器和編譯爲DLL
  2. 同解決方案A. 2
+0

是否有可用的應用程序自動P /調用給定的C + + DLL中的所有可用的方法? – c0D3l0g1c