C#呼叫外部dll檔案
阿新 • • 發佈:2020-06-22
參考自:https://www.cnblogs.com/lhyqzx/p/5970406.html
一、.dll檔案介紹
dll檔案(Dynamic Link Library)又稱動態連結庫,不能直接被執行,也不能接收訊息,包含能被程式或者其他dll檔案呼叫的函式(方法),須由程序載入才可發揮作用。
優點:
- 使用較少的資源,減少磁碟和實體記憶體中載入的程式碼的重複量
- 推進模組式體系結構,有助於模組式程式的開發
- 簡化部署和安裝,部署和安裝dll不要求重新建立與該dll連結的程式
二、dll的呼叫
- 託管:基於.net平臺開發的
- 非託管:主要是基於win32平臺開發的dll,activeX的元件
呼叫的基本形式:
[DLLImport("DLL檔案")]
修飾符 extern 返回變數型別 方法名稱 (引數列表);
注意:
- 需要在宣告中使用System.Runtime.InteropServices名稱空間
- DLLImport只能放在方法宣告上
- dll檔案必須位於程式當前目錄或者系統定義的查詢路徑中
三、.例項
1.C#動態載入dll中的非託管函式
(1)新建C#窗體工程(Add_func):
- 在Form中加入一個button和一個text控制元件,命名button為calButton,text命名為resultNum。
- 在Form.cs檔案中,使用System.Runtime.InteropServices名稱空間。
(2)新建C++ Win32專案工程(Count)
- 在裡面新建一個Count.cpp原始檔,插入如下程式碼:
extern "C" _declspec(dllexport)int _stdcall count(int a,int b);
//計算函式
int _stdcall count(int a,int b)
{
int _a = a;
int _b = b;
return _a + _b;
}
- F7編譯生成dll檔案,將Debug目錄下的Count.dll檔案拷貝到Add_func/bin/Debug下面。
(3)為calButton新增一個click事件,並加入如下程式碼:
[DllImport("Count.dll")]
static extern int count(int a,int b);
//求和按鈕
private void calButton_Click(object sender,EventArgs e)
{
int a = 6,b = 4;
int result = count(a,b);
resultNum.Text = result.ToString();
}
編譯執行,即可。