青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

cc

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
調(diào)用DLL,首先需要將DLL文件映像到用戶進(jìn)程的地址空間中,然后才能進(jìn)行函數(shù)調(diào)用,這個函數(shù)和進(jìn)程內(nèi)部一般函數(shù)的調(diào)用方法相同。Windows提供了兩種將DLL映像到進(jìn)程地址空間的方法:
1. 隱式的加載時鏈接
這種方法需要DLL工程經(jīng)編譯產(chǎn)生的LIB文件,此文件中包含了DLL允許應(yīng)用程序調(diào)用的所有函數(shù)的列表,當(dāng)鏈接器發(fā)現(xiàn)應(yīng)用程序調(diào)用了LIB文件列出的某個函數(shù),就會在應(yīng)用程序的可執(zhí)行文件的文件映像中加入一些信息,這些信息指出了包含這個函數(shù)的DLL文件的名字。當(dāng)這個應(yīng)用程序運(yùn)行時,也就是它的可執(zhí)行文件被操作系統(tǒng)產(chǎn)生映像文件時,系統(tǒng)會查看這個映像文件中關(guān)于DLL的信息,然后將這個DLL文件映像到進(jìn)程的地址空間。
系統(tǒng)通過DLL文件的名稱,試圖加載這個文件到進(jìn)程地址空間時,它尋找DLL 文件的路徑按照先后順序如下:
·程序運(yùn)行時的目錄,即可執(zhí)行文件所在的目錄;
·當(dāng)前程序工作目錄
·系統(tǒng)目錄:對于Windows95/98來說,可以調(diào)用GetSystemDirectory函數(shù)來得到,對于WindowsNT/2000來說,指的是32位Windows的系統(tǒng)目錄,也可以調(diào)用GetSystemDirectory函數(shù)來得到,得到的值為SYSTEM32。
·Windows目錄
·列在PATH環(huán)境變量中的所有目錄
VC中加載DLL的LIB文件的方法有以下三種:
①LIB文件直接加入到工程文件列表中
在VC中打開File View一頁,選中工程名,單擊鼠標(biāo)右鍵,然后選中“Add Files to Project”菜單,在彈出的文件對話框中選中要加入DLL的LIB文件即可。
②設(shè)置工程的 Project Settings來加載DLL的LIB文件
打開工程的 Project Settings菜單,選中Link,然后在Object/library modules下的文本框中輸入DLL的LIB文件。
③通過程序代碼的方式
加入預(yù)編譯指令#pragma comment (lib,”*.lib”),這種方法優(yōu)點(diǎn)是可以利用條件預(yù)編譯指令鏈接不同版本的LIB文件。因?yàn)椋贒ebug方式下,產(chǎn)生的LIB文件是Debug版本,如Regd.lib;在Release方式下,產(chǎn)生的LIB文件是Release版本,如Regr.lib。
當(dāng)應(yīng)用程序?qū)LL的LIB文件加載后,還需要把DLL對應(yīng)的頭文件(*.h)包含到其中,在這個頭文件中給出了DLL中定義的函數(shù)原型,然后聲明。
2 顯式的運(yùn)行時鏈接
隱式鏈接雖然實(shí)現(xiàn)較簡單,但除了必須的*.dll文件外還需要DLL的*.h文件和*.lib文件,在那些只提供*.dll文件的場合就無法使用,而只能采用顯式鏈接的方式。這種方式通過調(diào)用API函數(shù)來完成對DLL的加載與卸載,其能更加有效地使用內(nèi)存,在編寫大型應(yīng)用程序時往往采用此方式。這種方法編程具體實(shí)現(xiàn)步驟如下:
①使用Windows API函數(shù)Load Library或者M(jìn)FC提供的AfxLoadLibrary將DLL模塊映像到進(jìn)程的內(nèi)存空間,對DLL模塊進(jìn)行動態(tài)加載。
②使用GetProcAddress函數(shù)得到要調(diào)用DLL中的函數(shù)的指針。
③不用DLL時,用Free Library函數(shù)或者AfxFreeLibrary函數(shù)從進(jìn)程的地址空間顯式卸載DLL。
例:在應(yīng)用程序中調(diào)用dll文件

——在應(yīng)用程序中要首先裝入dll后才能調(diào)用導(dǎo)出表中的函數(shù),例如用mfc

創(chuàng)建基于對話框的工程test,并在對話框上放置"load"按鈕,先添加裝載代碼。
1.首先在testdlg.cpp的首部添加變量設(shè)置代碼:

//設(shè)置全局變量glibsample用于存儲dll句柄

hinstance glibsample=null;

//第二個變量showme是指向dll
庫中showme()函數(shù)的指針

typedef int(* showme)(void);

showme showme;

2.利用classwizard為"load"按鈕添加裝載dll的代碼

void ctestdlg::onloadbutton()

{

//要添加的代碼如下

if(glibmydll!=null)

{

messagebox("the sample.dll has already been load.");

return;

}

//裝載sample.dll,未加路徑,將在三個默認(rèn)路徑中尋找 (1)windows的系統(tǒng)目錄:\windows\system;

//(2)dos中path所指出的任何目錄;

//(3)程序所在的目錄;


glibsample=loadlibrary("sample.dll");

//返回dll中showme()函數(shù)的地址

showme=(showme)GetProcAddress(glibsample,"showme");
posted on 2009-04-20 10:35 醒目西西 閱讀(294) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品视频你懂的| 亚洲日本成人| 亚洲免费观看| 欧美黄色影院| 亚洲激情视频在线播放| 午夜视频久久久| 午夜免费日韩视频| 久久国产成人| 欧美va亚洲va日韩∨a综合色| 免费毛片一区二区三区久久久| 久热国产精品| 亚洲激情电影在线| 一区二区三欧美| 亚洲图片欧洲图片av| 欧美亚洲免费在线| 美女久久一区| 欧美日本不卡高清| 国产日韩精品一区| 在线日韩av永久免费观看| 亚洲国产女人aaa毛片在线| 亚洲三级免费观看| 亚洲国产精品一区| 欧美日韩妖精视频| 国产日韩欧美精品在线| 亚洲国产日韩欧美在线动漫| 日韩亚洲综合在线| 久久国产精品免费一区| 欧美激情一级片一区二区| 正在播放亚洲一区| 久热这里只精品99re8久| 欧美视频精品在线观看| 极品少妇一区二区三区| 99精品99| 欧美ed2k| 亚洲一区二区三区免费视频| 开心色5月久久精品| 欧美视频在线一区| 亚洲日本无吗高清不卡| 久久精品av麻豆的观看方式| 亚洲精品免费电影| 久久米奇亚洲| 国产精品一区二区你懂的| 亚洲破处大片| 久久手机精品视频| 午夜精品久久久久久久久久久久| 欧美黄色影院| 亚洲第一视频| 久久久777| 亚洲欧美色一区| 欧美三级不卡| 一区二区日韩精品| 欧美韩日高清| 男女精品网站| 91久久久久久| 美女脱光内衣内裤视频久久影院 | 亚洲无线视频| 欧美 日韩 国产一区二区在线视频| 国产亚洲激情| 欧美一区二区三区在线观看| 欧美精品一区二区三区在线播放| 在线看日韩欧美| 久久综合九色欧美综合狠狠| 亚洲欧美日韩一区在线| 国产精品福利在线| 午夜在线播放视频欧美| 一区二区三区视频在线播放| 欧美电影打屁股sp| 亚洲精品欧美| 亚洲电影av在线| 美女被久久久| 亚洲精品日韩精品| 亚洲欧洲精品一区二区| 欧美日韩视频在线观看一区二区三区 | 久久九九热re6这里有精品| 国产日本欧美一区二区| 久久精品国产一区二区电影 | 国产一区二区三区四区在线观看 | 亚洲成色www8888| 久久亚洲综合色一区二区三区| 激情综合自拍| 欧美激情视频在线免费观看 欧美视频免费一| 久久精品成人一区二区三区| 好吊一区二区三区| 亚洲电影免费| 欧美va天堂| 一区二区三区欧美在线| 亚洲欧美中日韩| 今天的高清视频免费播放成人| 亚洲嫩草精品久久| 亚洲一区二区不卡免费| 国产一区成人| 欧美福利一区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美三级乱人伦电影| 午夜在线成人av| 久久精品免费观看| 一区二区三区蜜桃网| 欧美诱惑福利视频| 99精品欧美一区二区蜜桃免费| 亚洲精品一区二区三区樱花 | 亚洲天堂偷拍| 一本到高清视频免费精品| 国产丝袜一区二区| 亚洲国产欧美一区二区三区同亚洲 | 亚洲欧美日韩电影| 久久久久久久999| 一区二区免费在线播放| 亚洲欧美资源在线| 亚洲电影专区| 午夜一区不卡| aa级大片欧美| 久久午夜羞羞影院免费观看| 亚洲国产高清自拍| 午夜久久tv| 一区二区三区四区蜜桃| 久久夜色精品国产| 久久精品人人做人人综合| 欧美精品国产精品日韩精品| 久久久中精品2020中文| 日韩午夜在线电影| 亚洲日本va在线观看| 小黄鸭精品aⅴ导航网站入口| 亚洲欧洲精品一区二区精品久久久| 亚洲欧美日韩国产| 亚洲视频精选| 欧美岛国激情| 美女精品自拍一二三四| 国产在线观看一区| 亚洲一区亚洲| 欧美一级一区| 国产精品卡一卡二| 中文久久精品| 亚洲图片自拍偷拍| 欧美极品欧美精品欧美视频| 欧美成人xxx| 亚洲承认在线| 久久这里只有精品视频首页| 久久一日本道色综合久久| 国内揄拍国内精品少妇国语| 亚洲女同精品视频| 欧美一区二区三区在线免费观看 | 亚洲日本欧美| 亚洲黄一区二区三区| 毛片av中文字幕一区二区| 亚洲欧美在线网| 欧美日韩精品在线视频| 亚洲区国产区| 99视频在线精品国自产拍免费观看| 欧美1区免费| 亚洲精品美女在线观看播放| 一区二区三区日韩在线观看| 欧美另类高清视频在线| 日韩一二在线观看| 亚洲免费中文字幕| 国产日本精品| 麻豆精品视频在线| 亚洲欧洲三级电影| 亚洲一区国产精品| 国产一区二区三区在线观看精品| 欧美影视一区| 一区免费在线| 欧美国产日韩精品| 一本色道久久综合亚洲精品不卡 | 欧美成人激情视频免费观看| 亚洲国产精品久久久久久女王| 麻豆视频一区二区| 亚洲精品视频免费观看| 亚洲一区3d动漫同人无遮挡| 国产女主播一区| 另类亚洲自拍| 亚洲一级黄色av| 麻豆精品精华液| 亚洲精品婷婷| 欧美日韩亚洲一区二区三区在线观看| 亚洲深夜福利| 免费看成人av| 午夜在线精品偷拍| 亚洲人成网站精品片在线观看| 欧美系列一区| 久久久综合网| 亚洲一级在线观看| 欧美国产成人在线| 午夜精品理论片| 在线看视频不卡| 国产女人水真多18毛片18精品视频| 欧美.www| 欧美一级淫片播放口| 亚洲精品少妇| 免费亚洲电影在线| 亚洲新中文字幕| 亚洲福利免费| 国产日韩在线播放| 欧美三级电影网| 欧美成人午夜激情在线| 午夜精品久久久久| 一区二区三区产品免费精品久久75 | 亚洲人成亚洲人成在线观看| 亚洲欧美日韩网| 日韩亚洲欧美成人| 亚洲国产美女|