qt建立共享動態庫
minGW編譯器生成的字尾是.a 和 .dll
msvc編譯器生成的字尾是 .lib 和 .dll
linux下生成的字尾是.so
我使用的是qt-msvc-5.7.0 版本
首先建立動態庫,new project -> Library -> c++庫
然後選擇建立的庫的型別 有共享庫和靜態庫和qt外掛三種,選擇共享庫
按需求選擇 ,如果用到介面則加上QtGui QtWidgets ,一般的用QtCore
建立完成,包含以下4個檔案
其中修改.pro檔案,新增下面部分
增加的部分 config :用來進行編譯控制,區分Debug版本和Release版本的庫的名稱(Debug版本庫名字後面帶d,Release版本不帶)
其中關於sharelib_global.h 檔案
在編譯共享庫時,必須將其標記為匯出。為了在客戶端使用共享庫,一些平臺可能需要一個特殊的匯入宣告。
為此,Qt 提供了兩個特殊的巨集:
Q_DECL_EXPORT:當編譯共享庫時,必須將其新增到使用的符號宣告。
Q_DECL_IMPORT:當編譯一個(使用了該共享庫)客戶端時,必須將其新增到使用的符號宣告。
所以,要確保正確的巨集能夠被呼叫(無論是編譯共享庫本身,還是在客戶端使用共享庫),通常通過新增一個特殊的標頭檔案來解決,這就是sharelib_global.h 存在的原因。
sharelib.h新增一個簡單的函式介面
sharelib.cpp
建立成功後 ,將庫裡面的檔案整理成以下結構
include資料夾
lib資料夾
接下來我們使用剛剛生成的庫
專案右鍵 新增庫->外部庫
分別選擇windows系統,動態,為debug版本加d,然後選擇生成的sharelib的路徑
將在.pro檔案中增加以下程式碼
在程式中使用,還要把生成的dll檔案放置在和執行檔案同一目錄,不然會出錯
參考原文地址:http://blog.csdn.net/liang19890820/article/details/77337088