一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

動態(tài)加載DLL的方法與注意的問題

 wwwijhyt圖書館 2014-05-10
加載DLL的方法主要有兩種:一種是隱式鏈接,另外一種是動態(tài)加載。
隱式鏈接會把DLL中所有標(biāo)志為_declspec(dllexport)的函數(shù)都加載,如果有多個(gè)DLL加載時(shí),可能會影響到程序執(zhí)行的效率。而用動態(tài)加載DLL的方式則可以根據(jù)需要去加載用到的函數(shù)。
動態(tài)加載DLL的方法:
1.把生成的.DLL文件復(fù)制到測試工程DLLTest目錄下。這里假設(shè)該.DLL文件為add.dll,主要代碼是:
_declspec(dllexport) int add(int x, int y)
{
return x + y;
}
2.在DLLTest工程中添加DllTest.cpp文件.
首先使用LoadLibrary("add.dll")加載add.dll文件:
HMODULE hmod = LoadLibrary("add.dll");
然后定義一個(gè)函數(shù)指針的類型:
typedef int (*AddAddr)(int x, int y);
注意,這里的參數(shù)與返回類型務(wù)必與add.dll文件中函數(shù)add的聲明一樣。
接著:
AddAddr Add = (AddAddr)GetProcAddress(hmod, "add");
如果Add值為空,則獲取函數(shù)的地址失敗!
if(!Add)
{
printf("獲取函數(shù)地址失?。?);
return;
}
最后,可以測試一下:
printf("test add(): 1+2=%d", add(1,2));
運(yùn)行結(jié)果一看,會出現(xiàn)“獲取函數(shù)地址失敗!”。為什么會這樣?
打開命令行,用cd命令到add.dll工程目錄的debug目錄下,然后使用命令:
dumpbin -exports add.dll
則會看到add.dll文件中的add函數(shù)的名稱為“http://huangdekai1.blog.163.com/blog/static/30571416201111319123199/mailto:“?add@@YAHHH@Z”,而不是函數(shù)名add,這是C++編譯器的命名改編機(jī)制。 修改原來的代碼:
這時(shí)運(yùn)行就成功了。但如果按這樣去動態(tài)加載DLL,那每次獲取函數(shù)地址都要使用dumpbin命令去獲取,則會很麻煩。
那怎樣可以直接使用add而不是 http://huangdekai1.blog.163.com/blog/static/30571416201111319123199/mailto:?add@@YAHHH@Z這個(gè)長長的字符串呢,修改add.dll的add函數(shù),在函數(shù)前加上extern "C",再編譯add.dll文件所在的工程,復(fù)制新生成的add.dll覆蓋DLLTest工程目錄下的add.dll,原來的代碼獲取函數(shù)地址時(shí)使用add,結(jié)果運(yùn)行就成功了。
而再使用dumpbin -exports add.dll命令,顯示add.dll的中的add函數(shù)的名稱變成了add.

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    婷婷一区二区三区四区| 1024你懂的在线视频| 久久人人爽人人爽大片av| 中文日韩精品视频在线| 欧美丰满人妻少妇精品| 欧美日韩三区在线观看| 国产韩国日本精品视频| 麻豆精品在线一区二区三区| 国产精品一区二区香蕉视频| 东京热男人的天堂一二三区| 国产精品欧美激情在线观看| 久久99精品国产麻豆婷婷洗澡| 欧美三级不卡在线观线看| 国产不卡一区二区四区| 中文人妻精品一区二区三区四区| 黄男女激情一区二区三区| 香蕉久久夜色精品国产尤物| 日本中文字幕在线精品| 日韩在线中文字幕不卡| 有坂深雪中文字幕亚洲中文 | 欧美大胆美女a级视频| 国产女高清在线看免费观看| 99精品国产一区二区青青| 中文字幕高清免费日韩视频| 日韩中文字幕狠狠人妻| 国产精品久久香蕉国产线| 精品国产亚洲av成人一区| 日本福利写真在线观看| 久七久精品视频黄色的| 暴力性生活在线免费视频| 中文字字幕在线中文乱码二区| 日本不卡片一区二区三区| 老司机精品线观看86| 亚洲乱妇熟女爽的高潮片| 欧美日韩免费黄片观看| 欧美午夜一级特黄大片| 亚洲第一区二区三区女厕偷拍| 五月激情综合在线视频| 日韩精品人妻少妇一区二区| 蜜臀人妻一区二区三区| 精品欧美国产一二三区|