C 呼叫C 封裝dll庫方法

2021-07-10 09:26:07 字數 1541 閱讀 9745

一、呼叫步驟

1、準備好c++dll庫;

2、將dll庫放入exe目錄下,或放在某個固定的檔案目錄下;

3、使用.net的interop機制引入c++dll到c#程式中,宣告介面函式,例:

[dllimport("kernel32")]

public

static

extern

intwriteprivateprofilestring(string section, string key, string value, string filepath);

public

static

extern

void

cfb_aesencryptstr_base64(string key, string iv, string ciphertext, stringbuilder outstr);

public

static

extern

void

cfb_aesdecryptstr_base64(string key, string iv, string ciphertext, stringbuilder outstr);

其中宣告的函式名為dll中的介面名,dllimport中的第乙個引數必須為常量

二、注意事項

1、c++封裝的介面必須以全域性函式形式封裝,否則會出現「無法找到入口點」錯誤,例如:

#define   dll_api   __declspec(dllexport)

extern

"c" dll_api void cfb_aesencryptstr_base64(const

char *key,char *iv,const

char *plaintext,char *coutstr);

2、注意c#與c++之間資料型別的對應關係,比如

dll 需傳入char *型別

[dllimport(「mydll.dll")]

//傳入值

public static extern int mysum (string astr1,string bstr1);

//dll中申明

extern 「c」 __declspec(dllexport) int winapi mysum(char * astr2,char *bstr2)

dll 需傳出char *型別

[dllimport(「mydll.dll")]

// 傳出值

public static extern int mysum (stringbuilder abuf, stringbuilder bbuf );

//dll中申明

extern 「c」 __declspec(dllexport) int winapi mysum(char * astr,char *bstr)

型別對應關係應用可以參考

C 呼叫DLL庫的方法

1 在c 專案的根目錄下,建立乙個資料夾,叫 thirdparty 在thirdparty裡面新建 include lib 資料夾。include中存放dll庫相關的所有標頭檔案,lib中存放dll庫相關的lib檔案。2 在專案屬性中,vc 目錄 包含目錄 中新增新建的include目錄 3 在專案...

學習使用C 封裝DLL並呼叫

一 生成dll vs2013 建立win32專案 dll 完成 cpp view plain copy include stdafx.h 關鍵在於加入這一句,意為將c語言下的程式匯出為dll extern c declspec dllexport void maopao int p,intcount...

C 呼叫C 的動態庫dll

以往我們經常是需要使用c 來呼叫c 的dll,這通過pinvoke就能實現。現在在實際的專案過程中,有時會遇到在c 的專案中呼叫某個c 的dll來完成特定的某個功能,我們都知道,native c 是沒辦法直接呼叫.net平台的dll的。那有沒有辦法來做到這一點了?答案是肯定的。雖然,native c...