[問題] C#中呼叫C++ Library的問題

看板C_Sharp作者 (lasfd)時間15年前 (2010/07/12 11:14), 編輯推噓1(1010)
留言11則, 5人參與, 最新討論串1/1
首先小弟將問題簡化如下,有一個C++的Library 小弟打算呼叫其中的Get_Group_List void Get_Group_List(_GROUP_LIST *Group_List); struct _GROUP_ITEM { char szName[32+1]; } struct _GROUP_LIST { int nCount; _GROUP_ITEM *stItem; }; 在C++的呼叫如下 _GROUP_LIST Group_List; Group_List.nCount=-1; Get_Group_List(&Group_List); //第一次呼叫,當nCount=-1,函數會傳回真正的SIZE Group_List.stItem=new _GROUP_ITEM[Group_List.nCount];//配置真正的記憶體大小 Get_Group_List(&Group_List); //第二次呼叫 //do something..... delete []Group_List.stItem; 其中的函數Get_Group_List,如果在C++呼叫的作法如上,但是如果我在C#中呼叫 該C++ library,我該如何表達呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.34.167

07/12 11:21, , 1F
用C#改寫這個函數,會比你用C#呼叫C++的dll簡單...
07/12 11:21, 1F

07/12 11:46, , 2F
小弟只是舉例而言,將程式給簡化了
07/12 11:46, 2F

07/12 11:49, , 3F
我知道,我還是建議你用C#改寫原本的dll...
07/12 11:49, 3F

07/12 11:59, , 4F
實際上此Dll裡面有很多函數可用,只是目前被此一問題所卡住
07/12 11:59, 4F

07/12 11:59, , 5F
如果要改寫,可能要花很多時間,實務上,上述的寫法,在C#中
07/12 11:59, 5F

07/12 11:59, , 6F
無法實現嗎?
07/12 11:59, 6F

07/12 12:05, , 7F
go to google "C# marshal"
07/12 12:05, 7F

07/12 14:01, , 8F
google P/Invoke or Plateform invoke may help also.
07/12 14:01, 8F

07/12 17:35, , 9F
印象中除非寫成COM元件,否則C#裡面是看不到C++的class
07/12 17:35, 9F

07/12 17:36, , 10F
所以如果dll不能動的話,可能只有重寫了
07/12 17:36, 10F

07/13 08:17, , 11F
用C幫DLL加一層wrapper
07/13 08:17, 11F
文章代碼(AID): #1CEeY8Nc (C_Sharp)