1. 程式人生 > >DLL的生成與在Qt中使用

DLL的生成與在Qt中使用

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");