C 呼叫C DLL函式,一般怎麼封裝這個DLL?

時間 2021-05-30 00:01:35

1樓:

沒錯,用C++/CLI。完全可以滿足你的需要。我的C++類中使用了openCV與Qt類。使用C++/CLI封裝後可以在C#中呼叫無壓力。

參考:Keep Learning 這個是最簡單的,可以在他的類上做改動,加入你的類的指標,和相關介面函式。

如果有人dll中的類要傳遞Mat型別,可以看這個:http://

milindapro.blogspot.sg/

2015/04/call-opencv-functions-from-cnet-bitmap.html

如果想傳遞字串:

passing string from C++/CLI class library to C#

int和double型別是通用的

我的經驗分享:

有道雲筆記 C#呼叫C++類實戰

2樓:李繁

我所使用的方法大概與你相同,但稍微有點不一樣:

1、若是乙個單獨T物件,我會在C++中定義乙個全域性物件來儲存,使用時轉換,而不會將其暴露出去;

2、若是需要多個T物件,則增加乙個介面,如編號(等),通過map來匹配,然後再轉換,從而實現多個T物件的呼叫;

PS:對於C++/CLI,所知甚少,剛才掃盲了下,發現其好像從技術角度來說更合理及完善,個人推薦學習之。

3樓:林凌宇

建議在匯出函式做一些介面,只使用基本資料型別與C#進行資訊互動。

C#那邊直接DLLImport就可以使用了。呼叫約定記得一致。

C++跟C#的資料型別共用的確好彆扭。

C 能否設計乙個一般的計時函式?

Cryonyx 題主的意思是這樣?template T measure function time Ret pFunc Args.Args args template T measure function time Ret C pFunc Args.C pC,Args args 不過不支援std f...

x86上為什麼C語言呼叫乙個函式要先把引數壓棧,之後才是返回位址?

Thomson 把壓棧和跳轉分開,讓編譯器甚至程式設計師計算返回位址,即使可以,效能和安全性也是很大的問題。除了把返回位址放在函式棧幀的頂部,也可以給函式的引數區域大小預留本函式或者裡面可能的tail call中最大值,就不用擔心引數放不下了。tail call對x86和命令式語言幫助不大吧,反正有...

用c 實現神經網路一般用什麼庫?

SMP66 2021年了,必須推薦一波後來出現的pytorch了。pytorch c api完全能滿足任意神經網路的設計,而且足夠簡單。比如我個人的開源分割專案就是基於pytorch cpp寫的。 Python的Theano每次執行都會先產生C程式碼再編譯執行.在Linux底下的話翻開資料夾 the...