怎麼使用C 呼叫C dll 類庫

2021-07-26 05:58:11 字數 735 閱讀 4567

今天公司有需要與第三方的硬體廠商進行對接,一般硬體廠商提供的大多為c++ dll ,這就涉及到c# 呼叫c++了,

首先我們需要看一下c++ dll 裡面定義的是什麼方法,包括傳遞的引數

dll 檔案不便上傳下面舉例說明是怎麼實現的

例如c++方法是這樣定義的

int __stdcall unpackdatafile(char* sorfile);

學習地c++的大家都知道這個是char* 指標

char * str="asdfasdfasdf"; 

所以在c#中我們再使用到的時候就不會不知道對應什麼型別了

下面開始看一下c#中怎麼呼叫

首先我們先導入c++ dll

[dllimport("unpackdll.dll", entrypoint = "unpackdatafile")]

並且需要在c#宣告一下對應方法

private static extern void unpackdatafile(string sorfile);  

注上面:char*  = string 

然後下面在**中進行操作

private void button1_click(object sender, eventargs e)

到此**已經編寫完成了,但是我們執行一下,一定會報錯

問題是乙個很低階的錯誤,注意:需要把c++ dll 到exe bin檔案下面,再執行ok了

C 中使用DllImport呼叫C dll

為什麼要在c 中呼叫c 的 呢?比如我有乙個c 專案要實現某種功能,同時我恰好有乙個已經實現了這個功能的c 我可以用c 重寫一遍,當然如果工程比較大的話,用dllimport來呼叫c 的dll是乙個更好的選擇。由於c dll是非託管 我不能直接在c 工程中新增引用 會出錯誤提示 命名空間system...

C 呼叫C Dll例程

form1.cs內容 using system using system.windows.forms using system.runtime.interopservices using system.text 申明dll中函式 dllimport kb dll.dll entrypoint inp...

C 呼叫C DLL 總結

當然在c 這樣定義之前要定義結構體,結構體的變數,函式要一樣。c 中的結構體是這樣的 struct stlencodedeviceinfo c 中的定義 structlayout layoutkind.sequential,charset charset.unicode public struct ...