1. 程式人生 > >qt建立共享動態庫

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