C++ 動態庫 DLL

一、動態庫是什麼

很多人寫程序的人都見過.lib和.dll文件,對動態庫也略有耳聞。

生成動態庫後可以得到兩個文件,後綴名分別是.lib以及.dll。

簡而言之,.lib稱爲導入庫,相當於頭文件;.dll是動態庫文件,相當於cpp,頭文件中函數的具體實現。

 

二、爲什麼使用動態庫

使用動態庫的優點很多,可以減少可執行文件的大小、實現資源共享、便於維護。比如在MFC中調用Qt。

關於動態庫與靜態庫的更多詳細介紹,可以參開這篇文章——c++靜態庫與動態庫

 

三、如何生成動態庫

1.一個簡單qt界面

我們的目標是創建這個界面的動態庫,然後在其它程序中引入動態庫,把該界面顯示出來。

 程序結構如下:

其中包括頭文件、實現文件,以及界面ui文件,程序的主界面類DllTestWidget。

2.創建工程,準備動態庫導出

a.創建完工程之後,設置工程屬性。

 

b.鏈接器-常規-輸出文件,設置動態庫文件.dll生成路徑。

 

c.鏈接器-高級-導入庫,設置導入庫文件.lib生成路徑。

上面這些只是設置生成路徑,如果不修改的話,一般生成在默認路徑win32文件夾下。

3.編寫程序,生成動態庫

#ifdef TESTWIDGET_LIB

# define TESTWIDGET_EXPORT __declspec(dllexport)

#else

# define TESTWIDGET_EXPORT __declspec(dllimport)

#endif

如果生成的動態庫,以後仍然供Qt使用,則直接加上上面的代碼,導出該類即可;

如果不希望包含ui文件,則將其放入.cpp文件中即可;

如果生成的動態庫以後在非Qt的環境下使用,則需要新建一個純虛類,讓Qt類繼承它,實現其共有的虛函數即可。

 

四、如何使用動態庫

1.配置屬性-調試-環境 加入生成.dll動態庫目錄路徑。

 

2.C/C++-常規-附加包含目錄 加入所需頭文件.h路徑。

 

3.鏈接器-常規-附加庫目錄 增加生成的導入庫.lib的路徑。

 

4.鏈接器-輸入-附加依賴庫 最後加入生成的導入庫.lib文件。

 

按照上面的設置,我們便可以在其它地方使用之前生成的動態庫啦。 

分類: Qt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章