QLibrary類是在程序運行時加載動態(tài)動態(tài)鏈接庫的。
(相關(guān)資料圖)
可以通過使用構(gòu)造函數(shù)添加需要加載的鏈接庫路徑,或者使用setFileName()函數(shù)設(shè)置路徑。如果是絕對路徑就直接加載,如果是相對路徑QLibrary會在相當(dāng)路徑及所有環(huán)境變量中尋找。
如果都找不到,會通過平臺的不同,去加對應(yīng)的.so或.dll文件。
這個意思就是,當(dāng)在windows上加載lib庫的參數(shù)為demo,那么QLibrary會在后面加.dll。如果是linux就會加.so。
通過調(diào)用load()函數(shù)加載鏈接庫,使用isLoad()函數(shù)去判斷加載是否成功,使用resolve()與load()差不多,但是當(dāng)如果load失敗,將會嘗試再次加載。當(dāng)經(jīng)過一次加載后,鏈接庫將會存儲到內(nèi)存中直到應(yīng)用程序退出。使用unload()函數(shù)解除,如果有多個QLibrary使用了同一個動態(tài)鏈接庫unload()將返回false。直到最后一個QLibrary解除,才會成功。
這里有2個概念:
顯式鏈接:直接在代碼中解析出函數(shù)名,這種方式叫顯式。
隱式鏈接:在程序構(gòu)建過程中參與鏈接過程。
這里有個要注意的此處只能搞C的dll,不能搞c++的dll
這里有2個調(diào)用法:
方法1:
QLibrary myLib(\"mylib\");typedef void (*MyPrototype)();MyPrototype myFunction = (MyPrototype) myLib.resolve(\"mysymbol\");if (myFunction)myFunction();
方法2:
typedef void (*MyPrototype)();MyPrototype myFunction =(MyPrototype) QLibrary::resolve(\"mylib\", \"mysymbol\");if (myFunction)myFunction();
下面是一個例子:
使用MSVC2015編譯的DLL
一個加和一個減的函數(shù):
使用Qt進(jìn)行調(diào)用(這里用WinGW)
Qt代碼如下:
#include #include #include int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QLibrary myLib(\"D:\QtProject\libraryDemo\DLL_C_Demo\");typedef int (*Add)(int a, int b);Add function = (Add)myLib.resolve(\"Add\");if(function){qDebug() << function(10, 20);}qDebug() << \"----------華麗的分割線----------\";typedef int (*Sub)(int a, int b);Sub function2 = (Sub)QLibrary::resolve(\"D:\QtProject\libraryDemo\DLL_C_Demo.dll\", \"Sub\");if(function2){qDebug() << function2(10, 100);}return a.exec();}
兩個程序下載倉庫:
https://github.com/fengfanchen/Qt/tree/master/sharedLibrariesDemo
【領(lǐng) QT開發(fā)教程 學(xué)習(xí)資料, 點擊下方鏈接莬費領(lǐng)取↓↓ ,先碼住不迷路~】
點擊這里:
關(guān)鍵詞:
-
QLibrary基本概念及實例
QLibrary類是在程序運行時加載動態(tài)動態(tài)鏈接庫的??梢酝ㄟ^使用構(gòu)造函數(shù)添加需要加載的鏈接庫路徑,或者使用
-
全球新消息丨禮建德集團(tuán)(08455.HK)與萬權(quán)訂立租賃協(xié)議
格隆匯5月4日丨禮建德集團(tuán)08455HK公告于2023年3月16日公司的間接全資附屬公司駿志工程有限公司作為承租人與
-
世界快報:工商銀行卡余額查詢手機(jī)怎么查 工商銀行卡余額查詢
今天來聊聊關(guān)于工商銀行卡余額查詢手機(jī)怎么查,工商銀行卡余額查詢的文章,現(xiàn)在就為大家來簡單介紹下工商銀
-
近視多少度高考體檢不合格 會有哪些影響|全球今頭條
每一只眼裸眼遠(yuǎn)近視視力低于4 5(0 3),眼睛的4 5大概就是近視300-350度之間,矯正視力不足4 9(0 8),
-
當(dāng)前滾動:蘋果煲湯放什么材料最好吃_蘋果煲湯放什么材料
你們好,最近小未來發(fā)現(xiàn)有諸多的小伙伴們對于蘋果煲湯放什么材料最好吃,蘋果煲湯放什么材料這個問題都頗為
-
10870元!你達(dá)標(biāo)了嗎?
節(jié)后上班第一天大家是不是錢包空空、腦袋空空?這周開始又是新的一個月大家的小目標(biāo)實現(xiàn)多少啦?早晨叫醒你
-
瀏覽量達(dá)9100萬余次!紀(jì)念“長征五一運動會” 爐霍縣全民健身活動圓滿收官|(zhì)當(dāng)前視點
5月1日至2日,紀(jì)念“長征五一運動會”爐霍縣全民健身活動、壹占紅爐山地跑、革命菜廚藝大比拼、長征體育文
-
漢口站400余名“站區(qū)人”守衛(wèi)142.1萬人次旅客安全出行
漢口站400余名“站區(qū)人”守衛(wèi)142 1萬人次旅客安全出行---湖北日報訊(記者張倩倩、通訊員陳新琳)5月4日,
-
岳池縣全力打造千億級生物醫(yī)藥產(chǎn)業(yè)集群
近日,中國?廣安(岳池)原料藥產(chǎn)業(yè)發(fā)展大會在岳池召開,岳池縣提出聚力打造千億產(chǎn)業(yè)的目標(biāo),高標(biāo)準(zhǔn)編制了生
-
世界速遞!俄外交部就克里姆林宮遭襲一事發(fā)表聲明
當(dāng)?shù)貢r間5月4日,俄羅斯外交部就俄羅斯總統(tǒng)官邸克里姆林宮遭恐怖襲擊一事發(fā)表聲明說,俄羅斯堅決譴責(zé)5月3日
-
觀焦點:第二屆《梅花綻放》全國黃梅戲名家戲友演唱會在合肥舉辦
中安在線訊5月1日至3日,第二屆《梅花綻放》全國黃梅戲名家戲友演唱會,在合肥市安徽省黃梅戲劇院好人劇場
-
世界速訊:厚德載物上善若水頭像_厚德載物上善若水
1、【上善若水,厚德載物】“上善若水,厚德載物”。2、作為中華美德的一種概括,這兩句話歷來成為志士仁人
-
礦床綜合評價 環(huán)球最資訊
1、礦床綜合評價(comprehensiveappraisalofmineraldeposit)是指對礦床中
-
一馬赫速度是多少公里 1馬赫是多少速度
今天來聊聊關(guān)于一馬赫速度是多少公里,1馬赫是多少速度的文章,現(xiàn)在就為大家來簡單介紹下一馬赫速度是多少
-
國際黃金走強(qiáng)收漲 美國4月服務(wù)業(yè)穩(wěn)定增長
摘要國際黃金周三(5月3日)日K收漲,國際黃金收報2039 09美元 盎司,上漲1 11%,日內(nèi)最高上探2040 35美元
-
實時:影響力!齊達(dá)內(nèi)助推皇馬追1.2億球星,瓜迪奧拉煩惱:多3000萬也買不到
除了底蘊之外,齊達(dá)內(nèi)在其中扮演著非常重要的角色,此前他已經(jīng)幫助皇馬拿下了2名頂級中場。據(jù)悉,皇馬的報
-
世界即時看!理財小白怎么開始學(xué)理財 從這幾方面來入手
隨著大家理財意識的加深,開展理財?shù)娜艘苍絹碓蕉嗔?,只是需要投資者多學(xué)習(xí),多總結(jié),那么理財小白怎么開始
-
環(huán)球速看:基礎(chǔ)化工行業(yè)2023年度中期策略報告:景氣下行時 新材料“進(jìn)擊”、低估值周期“防御”
基礎(chǔ)化工行業(yè)2023年度中期策略報告:景氣下行時新材料“進(jìn)擊”、低估值周期“防御”
-
“五一”我在崗,重點項目施工忙!|訊息
點擊上方 "漢中視聽 "??關(guān)注我們吧 今年“五一”期間,我市各重點項目建設(shè)不停不歇,廣大施工人員也堅守
-
精彩背后丨來自兩千公里外的祝福-天天快消息
4月30日晚,第二屆婺城發(fā)展大會歡迎晚宴在輕歌曼舞中拉開序幕,廣大鄉(xiāng)賢歡聚一堂,共話婺語、共敘婺情、共
- 科技創(chuàng)新 賦能生態(tài)環(huán)境教育
- 2021年度北京香山論壇專家視頻會閉幕
- “祖沖之二號”實現(xiàn)超導(dǎo)體系“量子計算優(yōu)越性”
- 113個光子的量子計算原型機(jī)“九章二號”研制成功
- 傳感器產(chǎn)業(yè)“盛宴”開啟 國產(chǎn)化道路任重道遠(yuǎn)
- 國務(wù)院印發(fā)《2030年前碳達(dá)峰行動方案》
- 就《2030年前碳達(dá)峰行動方案》專訪國家發(fā)展改革委負(fù)責(zé)人
- 自動駕駛 駛進(jìn)生活
- 卡塔爾埃米爾塔米姆會見王毅
- 內(nèi)蒙古包頭發(fā)生多車連撞事故 已致5死11傷