有兩種辦法在c#中呼叫c++寫的dll的方法有兩種:
1、com
將c++**封裝成com,然後在c#中引用
2、api
將c++**封裝成c介面的函式,類似於windows的api,然後在c#中通過dllimport引用
例如:c++標頭檔案為
int _stdcall decrypt(unsignec char *src, unsigned long src_len, unsigned char **dst, unsigned long *dst_len);
注:在*.def檔案中需呀為定義decrypt的匯出
在c#中引用如下命名空章
using system.runtime.interopservices;
在某個類的建構函式後面新增:
[dllimport("crypttools.dll")]
internal static extern int decrypt(system.intptr src, int src_len, ref system.intptr dst, ref int dst_len);
新增函式封裝對該api的呼叫:
internal static int sharp_decrypt(byte src, ref byte dst)
int result = -1, dstlen = 0;
intptr psrc = marshal.allochglobal(src.length);
marshal.copy(src, 0, psrc, src.length);
intptr pdst = intptr.zero;
result = decypt(psrc, src.length, ref pdst, ref dstlen);
if (0 == result)
marshal.freehglobal(psrc);
return result;
請注意,出於篇幅的考慮,此處沒有在crypttools.dll中新增unsigned char**的釋放函式,需要讀者自行新增。
C 中如何呼叫C 編寫的DLL
csdn c 經過這麼多年的發展已經積累了大量的動態連線庫,如果能夠在.環境裡應用這些函式庫,可以很大的提高整個應用的開發速度。使用c 程式設計的人員肯定對指標不會感到陌生,由於c 中的函式介面好多都可能定義成位指標,而c 中只有在宣告為unsafe code中才能夠使用指標。如果想讓c 的dll支...
C 中呼叫C 編寫的Dll
在vs2013中建立乙個win32控制台專案,單擊下一步,然後選擇dll。生成的工程目錄結構為 在自動生成的檔案中,dllmain.cpp 作為定義dll應用程式的入口點,它的作用跟exe檔案有個main或者winmain入口函式是一樣的。可以在目標cpp檔案 dllcxj.cpp 中編寫自己要實現...
在C 中呼叫VC編寫的dll庫
return a b 編譯工程。下面建立乙個c 的winform程式測試dlldemo 啟動vs.net ide,建立新的c 工程,選擇winform應用程式。在form1.cs中新增引用 using system.runtime.interopservices 在pulic class form1...