1. 程式人生 > >【Qt】Qt動態庫和靜態庫的建立和使用

【Qt】Qt動態庫和靜態庫的建立和使用

動態庫(共享庫)的建立

在Qt Creator中新建專案,選擇Library

建立lib工程
點選“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

建立lib工程
點選“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”

不用部署

靜態庫時在編譯時,編譯進可執行檔案中,不需要部署。