2016年8月4日 星期四

在c++/cli專案中使用c# dll

因為廠商提供的專案是c++,但是轉檔的utility是c#所以研究了一下
google會看到很多用COM物件或是其他看起來有點麻煩的方法
研究後發現是很困難,but還是有些不踏實的地方
後來覺得小東西也是可以整個重寫就好啦XD

1.設定專案為c++/cli
檔案(沒錯,是.cpp的屬性設定)要開啟c++/CLI。
開啟方式:檔案右鍵->properties>c/c++ 選擇Common Language RunTime Support (/clr)
開啟clr後在
檔案右鍵->properties>c/c++ >code genaration中的 Enable c++ exceptions,Basic Runtime Checks, Runtime Library要修正(不是很確定要怎麼修正) 才能順利compile

2.加入dll所在路徑
直接加入法:
在project的 reference中加入
but我這樣加vs不斷跟我說成是不相容
so..
設定路徑法:
將dll所在路徑設定為.cpp的搜尋路徑
檔案右鍵->properties>c/c++, Additional #using Directories加入c#產生的.dll路徑

*討論串上面是說也可以去修改c++ project的xml檔,因為一般c++預設的.net版本是4.0但c#是4.5(沒試過, MSDN上有說明)。vs2015是4.5.2確認更改後可以順利加入

3.設定完,在.cpp中加入了以下的code以使用c#中定義的class
#using <mscorlib.dll>
#using <myClass.dll>
using namespace MyNamespace;
void test()
{
myClass^ pInstance = gcnew myClass();
}
ps: ^是指managed pointer(ref)

that's all 簡單吧

But....
compiler 一直報 "#using" requires C++/CLI mode 的錯誤
後來上網大概(隨便)查一下發現好像是intellisense有問題..
二話不說把.suo刪除就回復了

reference, ref in MSDN,mix native c++ N c++/CLI


沒有留言:

張貼留言