【Qt】Qt動態庫和靜態庫的建立和使用
阿新 • • 發佈:2018-12-30
動態庫(共享庫)的建立
在Qt Creator中新建專案,選擇Library
點選“Choose”進入下一步
選擇建立庫的型別:共享庫
選擇Kit套件
選擇需要的模組
配置工程路徑、名字等
Qt Creator自動建立的檔案
我配置的動態庫名字為:Share
pro檔案內容
QT -= gui #在選擇需要的模組時,我只選用了QtCore,沒有使用QtGui
TARGET = Share #我配置的動態庫的名字:Share
TEMPLATE = lib #生成庫時該欄位為lib;生成執行檔案時為:app
DEFINES += SHARE_LIBRARY #將SHARE_LIBRARY新增為編譯時的前處理器巨集,在share_global.h中使用
SOURCES += Share.cpp
HEADERS += Share.h\ #使用動態庫時需要這兩個標頭檔案
share_global.h
unix {
target.path = /usr/lib
INSTALLS += target
}
share_global.h分析
#ifndef SHARE_GLOBAL_H
#define SHARE_GLOBAL_H
#include <QtCore/qglobal.h>
//使用了pro中DEFINES += SHARE_LIBRARY,選用Q_DECL_EXPORT
//Q_DECL_EXPORT:必須新增到符號宣告中(共享庫專案)
//Q_DECL_IMPORT:必須新增到符號宣告中(使用共享庫的客戶專案)
//不知道這兩個有什麼區別???
#if defined(SHARE_LIBRARY)
# define SHARESHARED_EXPORT Q_DECL_EXPORT
#else
# define SHARESHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // SHARE_GLOBAL_H
動態庫(共享庫)的使用
新增動態庫的標頭檔案
我定義的標頭檔案為Share.h、share_global.h,將這兩個標頭檔案拷貝到使用庫的工程目錄中,並新增到工程中
新增庫路徑
在pro中新增動態庫的路徑
LIBS += “E:/…/libshare.a”
部署動態庫
因為是動態庫,沒有編譯到可執行檔案中,所以需要將動態庫,部署到可執行檔案的能夠使用的庫路徑中,一般放到可執行檔案同目錄下。
靜態庫的建立
在Qt Creator中新建專案,選擇Library
點選“Choose”進入下一步
選擇建立庫的型別:靜態連結庫
其他步驟與動態庫建立相同
Qt Creator自動建立的檔案
我建立的靜態連結庫名字為:Static
pro檔案內容
QT -= gui #在選擇需要的模組時,我只選用了QtCore,沒有使用QtGui
TARGET = static #我配置的靜態庫名字:static
TEMPLATE = lib #生成庫時該欄位為lib;生成執行檔案時為:app
CONFIG += staticlib #編譯選項,使用靜態庫staticlib,預設是動態庫
SOURCES += Static.cpp
HEADERS += Static.h #使用靜態庫時,需要該標頭檔案
unix {
target.path = /usr/lib
INSTALLS += target
}
靜態庫的使用
新增標頭檔案
我定義的標頭檔案為Static.h,將這個標頭檔案拷貝到使用庫的工程目錄中,並新增到工程中
新增庫路徑
在pro中新增動態庫的路徑
LIBS += “E:/…/libstatic.a”
不用部署
靜態庫時在編譯時,編譯進可執行檔案中,不需要部署。