在最近的開發中需要做了demo,來驗證公司的老專案能否在qt上做重新開發;於是碰到的第乙個問題那就是dll檔案如何載入了;網上查閱了很多資料,記錄一下已成功載入dll檔案的方法,以防遺忘。
下面是我在vs編譯器上寫的乙個簡單的dll檔案,關於dll檔案如何編寫,我就不再贅述了。
.**件
#ifndef _mydll_h.cpp檔案#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
#include "編譯成功後,會得到下面三個檔案,mydll.h、mydll.lib、mydll.dllmydll.h
"extern"c
" mydll_api int add(int a, int
b)
然後開啟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...