VS編譯器如何調用動態鏈接庫文件


在我們日常的開發中,難免要使用別人封裝的第三方庫;那么接下來就跟着我一步步學習如何在VS編譯器中調用第三方庫吧。

我自己封裝了一個簡單的dll文件;函數如下所示:

頭文件(.h) #ifndef _MYDLL_H

#define _MYDLL_H

#ifdef MYDLL_EXPORTS
#define  MYDLL_API __declspec(dllexport)
#else
#define  MYDLL_API __declspec(dllimport)
#endif 

extern "C" MYDLL_API int add(int a, int b);

#endif
源文件(.cpp)
#include "mydll.h"

extern "C" MYDLL_API int add(int a, int b)
{
    return (a + b);
}

 

編譯成功后生成后,將.h文件,dll文件,lib文件拷貝出來放在同一個文件中,那么接下來就是如何正確的去使用dll文件了。

首先創建一個空白項目后,將上述的文件夾拷貝到該項目下,如下所示:

內部結構如下圖所示:

dll文件夾用來存放dll文件,include文件夾用來存放頭文件,lib文件夾用來存放lib文件;接下來右鍵點擊項目->屬性->常規,彈出如下界面:

點擊編輯,將第三方庫中的頭文件路徑包含進去,如下所示:

​ 這樣的話,頭文件的路徑就已經配置完成了,接下來就是如何配置lib文件的路徑了,點擊鏈接器->常規

選中附加庫目錄,將lib文件的路徑包含進去, 

 之后就是考慮如何把lib文件加載進來了,這個簡單,點擊鏈接器->輸入之后,將庫文件輸入進去即可,如下圖所示:

最后需要把dll文件拷貝到運行工作目錄中,即exe運行文件所在目錄,你可以手動拷貝,也可以在生成事件->后期生成事件中添加拷貝命令,如下所示:

那么調用動態鏈接庫的整個流程就已經全部搭建完成了, 需要提一下的是,我這邊的文件都是根據相對路徑去獲取的,這樣的話,當庫文件路徑發生改變時,不易出錯,如果你想用絕對路徑,那當然也是可以的。有興趣的可以嘗試一下。那么接下來就是如何在代碼中調用庫文件中的函數了,這個時候,頭文件就顯得舉足輕重了,首先把頭文件包含進來,之后,便可以直接調用庫函數了。代碼如下所示:

#include <iostream>
#include "mydll.h"

using namespace std;


int main()
{
    int nNum1 = 10;
    int nNum2 = 20;
    int nSum = add(nNum1, nNum2);

    cout << "調用庫函數的nSum = " << nSum << endl;

    system("pause");
    return 0;
}

運行得到的結果如下圖所示:


免責聲明!

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



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