<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 64,  comments - 9,  trackbacks - 0

    http://blog.csdn.net/sendy888/archive/2007/07/25/1707175.aspx
    動(dòng)態(tài)鏈接庫簡(jiǎn)介

    自從微軟推出16位的Windows操作系統(tǒng)起,此后每種版本的Windows操作系統(tǒng)都非常依賴于動(dòng)態(tài)鏈接庫(DLL)中的函數(shù)和數(shù)據(jù),實(shí)際上Windows操作系統(tǒng)中幾乎所有的內(nèi)容都由DLL以一種或另外一種形式代表著,例如顯示的字體和圖標(biāo)存儲(chǔ)在GDI DLL中、顯示W(wǎng)indows桌面和處理用戶的輸入所需要的代碼被存儲(chǔ)在一個(gè)User DLL中、Windows編程所需要的大量的API函數(shù)也被包含在Kernel DLL中。
    DLL是建立在客戶/服務(wù)器通信的概念上,包含若干函數(shù)、類或資源的庫文件,函數(shù)和數(shù)據(jù)被存儲(chǔ)在一個(gè)DLL(服務(wù)器)上并由一個(gè)或多個(gè)客戶導(dǎo)出而使用,這些客戶可以是應(yīng)用程序或者是其它的DLL。

    使用動(dòng)態(tài)鏈接庫的優(yōu)點(diǎn):
         最主要的一點(diǎn)是多個(gè)應(yīng)用程序、甚至是不同語言編寫的應(yīng)用程序可以共享一個(gè)DLL文件,真正實(shí)現(xiàn)了資源"共享",大大縮小了應(yīng)用程序的執(zhí)行代碼,更加有效的利用了內(nèi)存;
         使用DLL的另一個(gè)優(yōu)點(diǎn)是DLL文件作為一個(gè)單獨(dú)的程序模塊,封裝性、獨(dú)立性好,在軟件需要升級(jí)的時(shí)候開發(fā)人員只需要修改相應(yīng)的DLL文件就可以了,而且,當(dāng)DLL中的函數(shù)改變后,只要不是參數(shù)的改變,程序代碼并不需要重新編譯。這在編程時(shí)十分有用,大大提高了軟件開發(fā)和維護(hù)的效率。

    靜態(tài)庫:
    函數(shù)和數(shù)據(jù)被編譯進(jìn)一個(gè)二進(jìn)制文件(通常擴(kuò)展名為L(zhǎng)IB),在使用靜態(tài)庫的情況下,在編譯鏈接可執(zhí)行文件時(shí),鏈接器從庫中復(fù)制這些函數(shù)和數(shù)據(jù)并把他們和應(yīng)用程序的其他模塊組合起來創(chuàng)建最終的可執(zhí)行文件(EXE文件)。這個(gè)過程稱為"靜態(tài)鏈接",此時(shí)因?yàn)閼?yīng)用程序所需的全部?jī)?nèi)容都是從庫中復(fù)制了出來,所以靜態(tài)庫本身并不需要與可執(zhí)行文件一起發(fā)行。

    動(dòng)態(tài)庫:
    在使用動(dòng)態(tài)庫的時(shí)候,往往提供兩個(gè)文件,一個(gè)引入庫和一個(gè)DLL,引入庫包含被DLL導(dǎo)出的函數(shù)和變量的符號(hào)名,DLL包含實(shí)際的函數(shù)和數(shù)據(jù),在編譯鏈接可執(zhí)行文件時(shí),只需要鏈接引入庫,DLL中的函數(shù)代碼和數(shù)據(jù)并不復(fù)制到可執(zhí)行文件中,在運(yùn)行的時(shí)候再去加載DLL,訪問DLL中導(dǎo)出的函數(shù)

    動(dòng)態(tài)鏈接庫加載的2種方式
    1.隱式鏈接:隱式鏈接就是在程序開始執(zhí)行時(shí)就將DLL文件加載到應(yīng)用程序當(dāng)中。實(shí)現(xiàn)隱式鏈接很容易,只要將導(dǎo)入函數(shù)關(guān)鍵字_declspec(dllimport)函數(shù)名等寫到應(yīng)用程序相應(yīng)的頭文件中就可以了。
    注意:要先將Dll.dll和Dll.lib拷貝到當(dāng)前工程所在的目錄下面,

    2.顯式鏈接:顯式鏈接是應(yīng)用程序在執(zhí)行過程中隨時(shí)可以加載DLL文件,也可以隨時(shí)卸載DLL文件,這是隱式鏈接所無法作到的,所以顯式鏈接具有更好的靈活性,對(duì)于解釋性語言更為合適。
    首先要將DLL文件拷貝到工程所在的目錄或Windows系統(tǒng)目錄下。使用顯式鏈接應(yīng)用程序編譯時(shí)不需要使用相應(yīng)的Lib文件。
    主要是三個(gè)函數(shù)的調(diào)用
    LoadLibrary//加載動(dòng)態(tài)鏈接庫文件;
    GetProcAddress//獲取導(dǎo)入到應(yīng)用程序中的函數(shù)指針
    FreeLibrary(hDLL)//卸載動(dòng)態(tài)鏈接庫文件

     

    本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/sendy888/archive/2007/07/25/1707175.aspx

    posted on 2010-06-03 17:23 super_nini 閱讀(321) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2010年6月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊(cè)

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲成人网在线播放| 亚洲精品乱码久久久久久蜜桃不卡| 久久精品九九亚洲精品| 十八禁在线观看视频播放免费| 国产成人亚洲综合| 丝袜捆绑调教视频免费区| 久久亚洲中文字幕精品一区四 | 亚洲精品一区二区三区四区乱码| 手机看片国产免费永久| 久久精品国产亚洲av四虎| 国产精品偷伦视频观看免费| 亚洲国产精品无码久久一区二区 | 青青操免费在线视频| 亚洲av伊人久久综合密臀性色| a视频免费在线观看| 亚洲国产精品自在线一区二区| 久久国产免费观看精品3| 亚洲喷奶水中文字幕电影| 最新猫咪www免费人成| 风间由美在线亚洲一区| 成人亚洲性情网站WWW在线观看| 久久九九免费高清视频| 久久水蜜桃亚洲av无码精品麻豆| 久久久久av无码免费网| 亚洲第一街区偷拍街拍| 久久久久亚洲精品无码网址| 久久久久久毛片免费播放| 亚洲欧美成人综合久久久| 亚洲自偷自偷偷色无码中文| 久久永久免费人妻精品下载| 中文字幕在线日亚洲9| 亚洲综合色视频在线观看| 无码人妻一区二区三区免费看 | 三年片在线观看免费观看大全动漫 | 久久亚洲AV无码精品色午夜麻豆 | 免费人成大片在线观看播放电影 | 大地资源二在线观看免费高清| 精品在线视频免费| 亚洲av激情无码专区在线播放| 永久免费AV无码国产网站| 中国一级毛片免费看视频|