C#加載動態(tài)鏈接庫
前言
C#調(diào)用C/C++動態(tài)鏈接庫的簡單案例:用C#實現(xiàn)窗口調(diào)用由C/C++編譯生成的dll,dll實現(xiàn)兩整數(shù)求和功能,即函數(shù)int Add(int x, int y);
創(chuàng)建DLL
實現(xiàn)步驟:
一:用C/C++編寫dll
1、新建VC++應(yīng)用程序項目,輸入名稱為MyAdd,在應(yīng)用程序設(shè)置時選擇dll應(yīng)用程序類型,并勾選為空項目類型。
2、新建項目頭文件dll.h 如下:
#ifndef?DLL_EXPORT
#define?DECLDIR?__declspec(dllimport)
#else
#define?DECLDIR?__declspec(dllexport)
#endif
建立項目源文件dllmin.cpp
#include?
#define?DLL_EXPORT?//先定義宏
#include?"dll.h"//這個頭文件必須在#define?DLL_EXPORT后面
?
extern?"C"
{???
DECLDIR?int?Add(?int?a,?int?b?)???
{???
return(?a?+?b?);???
}
}
編譯調(diào)試,生成MyAdd.dll庫函數(shù)
調(diào)用DLL
用C#語言建立窗口應(yīng)用程序并調(diào)用dll
1、用VS2010建立C#應(yīng)用窗口程序,添加按鈕和文本輸出控件,如下圖

2、將MyAdd.dll拷貝到新建項目文件下的bin目錄中。
3、響應(yīng)按鈕事件,調(diào)用MyAdd.dll實現(xiàn)兩數(shù)相加并在文本框中顯示相加后的結(jié)果,其實現(xiàn)代碼如下:
首先聲明調(diào)用MyAdd.dll
[DllImport("MyAdd.dll",?SetLastError?=?true)]
????????private?static?extern?int?Add(int?a,?int?b);
在按鈕相應(yīng)中添加響應(yīng)代碼:
??int?x?=?7;
??int?y?=?9;
??int?z?=?Add(x,?y);
??textBox1.Text?=?Convert.ToString(z);
4、調(diào)試程序生成可執(zhí)行文件,實現(xiàn)結(jié)果如圖
三:總結(jié)
1、注意事項
(a)、將生成的dll文件放入DllImport可以尋找到的地方:
1、.exe文件所在目錄?
2、System32目錄?
3、環(huán)境變量目錄。
(b)、在C#窗口調(diào)用函數(shù)下,首先聲明調(diào)用Dll文件,如下:
[DllImport("MyAdd.dll",?SetLastError?=?true)]
private?static?extern?int?Add(int?a,?int?b);
聲明中應(yīng)注意:當(dāng)參數(shù)傳遞時,尤其是傳遞和返回字符串時,VC++中主要字符串類型為:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等,但轉(zhuǎn)為C#類型卻不完全相同。
來源:https://blog.csdn.net/redeagle_gbf/article/details/14001487
版權(quán)申明:本文來源于網(wǎng)友收集或網(wǎng)友提供,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請轉(zhuǎn)告版主或者留言,本公眾號立即刪除。
支持小微:
騰訊云 爆款2核2G云服務(wù)器首年40元,企業(yè)首購最高獲贈300元京東卡
鏈接:https://curl.qcloud.com/1VVs7OBH
右下角,您點一下在看圖片
小微工資漲1毛
商務(wù)合作QQ:185601686
