系列文章目錄
這里主要是講述windows下qt使用第三方庫。
前言
windows下qt使用第三方庫(靜態(tài)鏈接庫lib)。
為了能夠使測試更準確,首先自己用qt創(chuàng)建了一個已經(jīng)封裝好的lib庫。
然后讓另一個項目去鏈接這個lib靜態(tài)庫,并且去調(diào)用里面的方法。
一、準備工作
目的:
使untitled項目
能夠使用myllplib.lib
靜態(tài)庫,這樣untitled項目就可以使用myllplib.lib庫里面的函數(shù)。
myllplib項目:
這里只寫了一個void show()
方法,用來測試untitled項目是否能夠成功調(diào)用show()
函數(shù),如圖:
二、鏈接lib靜態(tài)庫
把生成的myllplib.lib
庫還有需要用到的函數(shù)頭文件myllplib.h
,放到untitled項目
下的include
目錄下。
這里庫和頭文件路徑不唯一,但是要保證untitled項目能夠識別到其路徑位置,我放的的untitled項目中的include路徑下。
1. 配置
1. 添加庫
2. 外部庫
3. 完成設(shè)置
4. 自動更新untitled.pro文件
這里要把庫對應(yīng)的頭文件路徑設(shè)置到INCLUDEPATH能夠識別的到地方。就是
myllplib.h
頭文件的路徑位置。我放的是include目錄
下
2.測試
添加頭文件#include "myllplib.h"
、并調(diào)用myllplib.lib
里面的函數(shù)
總結(jié):
把第三方lib庫、頭文件,放到指定的路徑中(我這里是全部放到了untitle項目的include目錄下),要保證untitled項目能夠找到lib庫和頭文件。
三、靜態(tài)庫和動態(tài)庫區(qū)別
3.1 靜態(tài)庫和動態(tài)庫的基本概念
靜態(tài)庫,是在可執(zhí)行程序連接時就已經(jīng)加入到執(zhí)行碼中,在物理上成為執(zhí)行程序的一部分;使用靜態(tài)庫編譯的程序運行時無需該庫文件支持,哪里都可以用,但是生 成的可執(zhí)行文件較大。
動態(tài)庫,是在可執(zhí)行程序啟動時加載到執(zhí)行程序中,可以被多個可執(zhí)行程序共享使用。使用動態(tài)庫編譯生成的程序相對較小,但運行時需要庫 文件支持,如果機器里沒有這些庫文件就不能運行。
3.2 如何使用動態(tài)庫
如何程序在連接時使用了共享庫,就必須在運行的時候能夠找到共享庫的位置。
- linux的可執(zhí)行程序在執(zhí)行的時候默認是先搜索
/lib
和/usr/lib
這兩個目錄,然后按照/etc/ld.so.conf
里面的配置搜索絕對路徑。 - 同時,Linux也提供了環(huán)境變量
LD_LIBRARY_PATH
供用戶選擇使用,用戶可以通過設(shè)定它來查找除默認路徑之外的 其他路徑:
如查找/work/lib路徑,你可以在
/etc/rc.d/rc.local
或其他系統(tǒng)啟動后即可執(zhí)行到的腳本添加如下語句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)
。并且LD_LIBRARY_PATH
路徑優(yōu)先于系統(tǒng)默認路徑之前查找(詳細參考《使 用 LD_LIBRARY_PATH》)。
不過LD_LIBRARY_PATH
的設(shè)定作用是全局的,過多的使用可能會影響到其他應(yīng)用程序的運行,所以多用在調(diào)試。(LD_LIBRARY_PATH 的缺陷和使用準則,可以參考《Why LD_LIBRARY_PATH is bad》 )。通常情況下推薦還是使用gcc的-R或-rpath選項來在編譯時就指定庫的查找路徑,并且該庫的路徑信息保存在可執(zhí)行文件中,運行時它會直接到該路 徑查找?guī)?,避免了使用LD_LIBRARY_PATH環(huán)境變量查找。
3.3 庫的鏈接時路徑和運行時路徑
現(xiàn)代連接器在處理動態(tài)庫時將鏈接時路徑(Link-time path)和運行時路徑(Run-time path)分開,用戶可以通過-L指定連接時庫的路徑,通過-R(或-rpath)指定程序運行時庫的路徑,大大提高了庫應(yīng)用的靈活性。比如我們做嵌入式 移植時#arm-linux-gcc $(CFLAGS) –o target –L/work/lib/zlib/ -llibz-1.2.3 (work/lib/zlib下是交叉編譯好的zlib庫),將target編譯好后我們只要把zlib庫拷貝到開發(fā)板的系統(tǒng)默認路徑下即可。或者通過- rpath(或-R )、LD_LIBRARY_PATH指定查找路徑。文章來源:http://www.zghlxwxcb.cn/news/detail-416084.html
共享庫原文鏈接文章來源地址http://www.zghlxwxcb.cn/news/detail-416084.html
到了這里,關(guān)于windows下qt使用第三方庫(靜態(tài)鏈接庫lib)、靜態(tài)庫和動態(tài)庫區(qū)別、動態(tài)庫的使用。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!