掃盲
靜態(tài)鏈接庫是什么砖第?
將自己設(shè)計(jì)的類導(dǎo)出為二進(jìn)制形式的可執(zhí)行代碼。靜態(tài)鏈接庫有兩種形式
- MSVC編譯器生成的文件后綴為 ".lib"
- MinGW編譯器生成的文件后綴為 ".a"
何種場(chǎng)合下使用靜態(tài)鏈接庫环凿?
在小組開發(fā)時(shí)梧兼,各成員將自己開發(fā)的類導(dǎo)出,供其他成員使用智听。他人只能使用你寫的類羽杰,不能修改和查看源碼捷泞,方便項(xiàng)目代碼的管理拓劝。
使用靜態(tài)鏈接庫
在應(yīng)用程序中使用一個(gè)靜態(tài)鏈接庫,只需".lib"文件和類的頭文件欺税,不需要.cpp源文件
使用Qt Creator創(chuàng)建靜態(tài)鏈接庫
-
創(chuàng)建按靜態(tài)鏈接庫項(xiàng)目
通過項(xiàng)目創(chuàng)建向?qū)?chuàng)建一個(gè)靜態(tài)鏈接庫項(xiàng)目环肘,如下圖所示
- .pro文件說明
pro文件中內(nèi)容如下
TEMPLATE = lib 項(xiàng)目模板是庫,不是應(yīng)用程序
CONFIG += staticlib 項(xiàng)目配置為靜態(tài)庫 - 關(guān)于最終生成的文檔
Debug還是Release模式下生成的文件名稱相同集灌,Debug下變異的程序不會(huì)添加字母“d”悔雹,但是在release和debug模式下使用靜態(tài)鏈接庫時(shí),應(yīng)使用相應(yīng)的模式下導(dǎo)出的庫文件欣喧。 - 添加自己的類
將項(xiàng)目配置時(shí)自動(dòng)生成的類刪除腌零,并添加自己寫好的類即ui文件。此步驟在pro文件中進(jìn)行唆阿。
筆者這里使用的類的功能是一個(gè)獲取QPen的對(duì)話框益涧,用戶可以在這個(gè)對(duì)話框中選擇線條類型、顏色驯鳖、寬度等闲询,類名為QPenDialog。由于這里使用的類包含ui文件浅辙,所以源文件有三個(gè)扭弧,分別是 .h .cpp 和.ui文件。下面分步驟展示lib文件的生成方法记舆。-
將寫好的類復(fù)制到項(xiàng)目文件夾下鸽捻,共包含三個(gè)文件qpendialog.h qpendialog.cpp qpendialog.ui
-
在pro文件中添加這3個(gè)文件
-
分別在debug和release模式下編譯生成lib文件
-
將lib文件和.h頭文件復(fù)制出備用
-
- 編寫pri文件
Qt中可以使用pri文件引入第三方庫,新建一個(gè)文本文件泽腮,重命名為"qpendialog.pri"輸入頭文件和lib路徑即可
INCLUDEPATH += C:/Users/cnqdf/Desktop/qpendialog
Debug: {
LIBS += -lC:/Users/cnqdf/Desktop/qpendialog/staticLibd
}
Release: {
LIBS += -lC:/Users/cnqdf/Desktop/qpendialog/s![002.gif](https://upload-images.jianshu.io/upload_images/9031828-0747d6e3b5db666a.gif?imageMogr2/auto-orient/strip)
taticLib
}
- 創(chuàng)建一個(gè)應(yīng)用程序
這里過程就不說了御蒲,隨便創(chuàng)建一個(gè)QMainWindow的程序就可以,主要是為了測(cè)試靜態(tài)鏈接庫的诊赊。在此程序的pro文件中添加一行:
include("pri文件路徑/qpendialog.pri")
執(zhí)行qMake厚满,確保pri文件被引入
-
包含頭文件,使用靜態(tài)鏈接庫
筆者這里使用的是靜態(tài)鏈接庫中的一個(gè)getPen函數(shù)碧磅,調(diào)用此函數(shù)時(shí)彈出Pen選擇對(duì)話框痰滋。
-
測(cè)試程序是否運(yùn)行正常
最后一步測(cè)試以下靜態(tài)鏈接庫是否運(yùn)行正常
筆者的靜態(tài)鏈接庫是一個(gè)獲取QPen的類摘能,如果獲取正常,則在主窗口使用剛剛獲取的線型等繪制一個(gè)矩形敲街。注意需要在debug和release模式下分別測(cè)試团搞,若都運(yùn)行正常則此靜態(tài)鏈接庫導(dǎo)出成功。
博客中源碼下載鏈接 點(diǎn)我