DLL的生成與在Qt中使用
阿新 • • 發佈:2019-01-02
1、什麼是靜態庫(.lib)
靜態庫通常是.lib檔案,在編譯時從靜態庫中取出函式和資料,編譯到exe檔案中,釋出軟體時不需要這個.lib檔案,因為需要的程式碼已經複製到exe檔案當中。
2、什麼是動態庫(.dll)
動態庫通常是.dll檔案,在編譯時不會將動態庫中的檔案和資料編譯到exe檔案中,而是在執行時從dll載入到記憶體中。如果dll需要修改只要重新發布dll並替換即可,不需要重新編譯exe檔案。
注意動態庫經常也附帶一個引入庫檔案(.lib),但是此lib不同於靜態庫。引入庫僅包含函式和變數的符號名(類似標頭檔案?),而在dll中才有實際的函式及資料。
3、呼叫dll中的函式必須是已經匯出的函式
即類似於public函式才可以被外部呼叫。
4、隱式載入(.h中)
#pragma comment(lib,"Dll1.lib")
然後在.cpp中:
_declspec(dllimport) int add(int a, int b);
_declspec(dllimport) int subtract(int a, int b);
然後就可以呼叫add和substract函數了。
5、顯式載入
只要在需要的地方使用:
hInst = LoadLibrary(L"Dll1.dll");