在C 中如何呼叫C 編寫的DLL

2021-09-30 08:28:17 字數 1030 閱讀 2762

有兩種辦法在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...