【技巧篇】C#調用外部dll文件


參考自: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();
}

編譯運行,即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM