欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

QT調(diào)用DLL實現(xiàn)原理-創(chuàng)新互聯(lián)

1)win下動態(tài)庫調(diào)用有關(guān)的函數(shù)包括:
(1)LoadLibrary,裝載動態(tài)庫。
(2)GetProcAddress,獲取要引入的函數(shù),將符號名或標(biāo)識號轉(zhuǎn)換為DLL內(nèi)部地址。
(3)FreeLibrary,釋放動態(tài)鏈接庫。
2)unix上與動態(tài)庫調(diào)用有關(guān)的函數(shù)包括:
(1)_打開動態(tài)鏈接庫:dlopen,函數(shù)原型void *dlopen (const char *filename, int flag);
dlopen用于打開指定名字(filename)的動態(tài)鏈接庫,并返回操作句柄。
(2)取函數(shù)執(zhí)行地址:dlsym,函數(shù)原型為: void *dlsym(void *handle, char *symbol);
dlsym根據(jù)動態(tài)鏈接庫操作句柄(handle)與符號(symbol),返回符號對應(yīng)的函數(shù)的執(zhí)行代碼地址。
(3)關(guān)閉動態(tài)鏈接庫:dlclose,函數(shù)原型為: int dlclose (void *handle);
dlclose用于關(guān)閉指定句柄的動態(tài)鏈接庫,只有當(dāng)此動態(tài)鏈接庫的使用計數(shù)為0時,才會真正被系統(tǒng)卸載。
(4)動態(tài)庫錯誤函數(shù):dlerror,函數(shù)原型為: const char *dlerror(void); 當(dāng)動態(tài)鏈接庫操作函數(shù)執(zhí)行失敗時,dlerror可以返回出錯信息,返回值為NULL時表示操作函數(shù)執(zhí)行成功。

為新華等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及新華網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、新華網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

我們來分析下Qt的源代碼,看看Qt是如何封裝這兩種不同的調(diào)用動態(tài)庫的方法。

下面是我用vc編寫的一個動態(tài)庫中的函數(shù)add:
extern "C" __declspec(dllexport) int __stdcall add(int a,int b)
{
   return a+b;
}

下面我就用QLibrary來調(diào)用一下:

QLibrary lib("QtDllTest.dll");
if (lib.load())
{
   typedef int(*AddFunction)(int a,int b);
   AddFunction Add=(AddFunction)lib.resolve("add");
   if (!Add)
   {
       cout<<"failed"<<endl;
   }
   else
   {
      int m;
      m=Add(1,1); //來個計算1+1
      cout<<"result:"<<m<<endl;
   }
   lib.unload();
}
else
{
   cout<<"failed"<<endl;
}

首先將目錄切換到QTDIR/src/corelib/plugin,這里面就是QLibrary實現(xiàn)的源代碼,打開qlibrary_p.h(熟悉了Qt的常用手法,就知道,這就是QLibrary內(nèi)部實現(xiàn)的代碼),可以看到
   bool load_sys();
   bool unload_sys();
   void *resolve_sys(const char *);
三個函數(shù)。在qlibrary.cpp中可以找到調(diào)用這三個函數(shù)的地方
bool QLibrary::load ()調(diào)用了load_sys;
bool QLibrary::unload ()調(diào)用了unload_sys;
void * QLibrary::resolve ( const char * symbol )調(diào)用了resolve_sys

但是并沒有找到這三個函數(shù)的實現(xiàn),這是這么回事呢?
打開QTDIR/src/corelib/plugin/plugin.pri文件,
win32 {
 SOURCES += plugin/qlibrary_win.cpp
}

unix {
 SOURCES += plugin/qlibrary_unix.cpp
}

原來如此啊。

我們仔細(xì)看下qlibrary_win.cpp文件,load_sys函數(shù)調(diào)用了LoadLibrary,unload_sys調(diào)用了FreeLibrary,resolve_sys調(diào)用了GetProcAddress。
而在qlibrary_unix.cpp文件中,各種linux平臺又分好多種。但是基本上load_sys調(diào)用了dlopen,unload_sys調(diào)用了dlclose,resolve_sys調(diào)用了dlsym。
在HPUX中dlopen對應(yīng)shl_load,dlclose對應(yīng)shl_unload,dlsym對應(yīng)shl_findsym。

原來QLibrary就是這樣實現(xiàn)不同平臺動態(tài)庫的調(diào)用。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章題目:QT調(diào)用DLL實現(xiàn)原理-創(chuàng)新互聯(lián)
URL分享:http://aaarwkj.com/article20/pjhjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、移動網(wǎng)站建設(shè)、App開發(fā)、小程序開發(fā)網(wǎng)站策劃、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
日本特黄特色大片免费| 国产av一区二区三区高潮蜜| 亚洲特级黄色做啪啪啪| 亚洲男人天堂免费观看| 亚洲av色网在线观看| 男人午夜激情免费网站| 国产三级无遮挡在线观看| 黄色片一区二区三区四区| 久久久国产精品免费看| 国产三级三级三级精品8ⅰ区| 国产精品毛片视频一区二区| 精品国产一区二区三区精品日韩| 粉嫩欧美一区二区三区| 黑人巨大亚洲一区二区久| 黑人爆操中国女孩在线观看| 97福利影院在线观看| 老司机午夜视频在线观看| 欧美精品成人在线一区| 两性色午夜视频在线观看| 亚洲老熟女老妇老女人| 天天操夜夜操狠狠操91| 一区二区欧美日韩91| 国产精品熟女一区二区三区| 日韩网激情视频在线观看| 蜜桃午夜精品一区二区三区| 2023天天操夜夜操| 在线看黄色片播放器日韩| 国产精品国语对白av处女| 午夜精品久久福利视频| 亚洲av毛片免费在线| 亚洲风情亚av在线播放| 欧美日本国产高清不卡| 激情毛片av在线免费看| 久热精品视频在线观看| 国欧美一区二区三区| 男人天堂一区二区av| 无遮挡国产精品一级二级三级视频| 18岁禁看网站在线看| 亚洲中文字幕乱码第一页| 亚洲欧美综合区丁香六月| 我想看亚洲一级黄色录像|