Qt如何呼叫VS編寫的動態鏈結庫 dll檔案

2022-09-16 21:27:30 字數 1413 閱讀 9519

在最近的開發中需要做了demo,來驗證公司的老專案能否在qt上做重新開發;於是碰到的第乙個問題那就是dll檔案如何載入了;網上查閱了很多資料,記錄一下已成功載入dll檔案的方法,以防遺忘。

下面是我在vs編譯器上寫的乙個簡單的dll檔案,關於dll檔案如何編寫,我就不再贅述了。

.**件

#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)

編譯成功後,會得到下面三個檔案,mydll.h、mydll.lib、mydll.dll

然後開啟qt建立乙個專案;我是把這三個檔案全部拷貝到了執行工作目錄;如下所示:

下面介紹一下qt如何隱式呼叫dll檔案:

開啟.pro檔案

在工程檔案中包含.**件的路徑以及庫檔案的路徑即可,下面就是如何呼叫庫檔案中的函式了:

#include #include 

#include

"mydll.h"//

包含標頭檔案

intmain()

上述是隱式呼叫庫檔案的函式,還有一種顯示呼叫方法,如下所示:

#include #include 

#include

"mydll.h"//

包含標頭檔案

typedef

int(*pfun)(int, int

);int

main()

else

else

}if(mydll.isloaded())

return0;

}

相較而言,隱式呼叫比顯示呼叫更加簡潔,通常都是選擇隱式呼叫更為合適。

當然,在配置庫檔案的路徑時,也可以選擇用相對路徑的方式,如下所示:

vs 中呼叫QT的動態連線庫

1 建立乙個 qt c 的動態連線庫 2 在標頭檔案中宣告要匯出的介面 ifndef qtdlltest h define qtdlltest hextern c declspec dllexport void init endif qtdlltest h 3 在cpp檔案中對介面進行實現 void...

Qt呼叫VC 生成的動態鏈結庫

qt如何呼叫vc 生成的動態鏈結庫?假設當前有vc 編譯器生成的動態庫檔案testdll.h,testdll.lib和testdll.dll。testdll.h檔案原始碼如下 ifdef testdll exports define testdll api declspec dllexport el...

Qt呼叫VC 生成的動態鏈結庫

qt如何呼叫vc 生成的動態鏈結庫?假設當前有vc 編譯器生成的動態庫檔案testdll.h,testdll.lib和testdll.dll。testdll.h檔案原始碼如下 ifdef testdll exports define testdll api declspec dllexport el...