今天公司有需要與第三方的硬體廠商進行對接,一般硬體廠商提供的大多為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 ...