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

隨感而發(fā)

雜七雜八

統(tǒng)計(jì)

留言簿(13)

閱讀排行榜

評(píng)論排行榜

【轉(zhuǎn)】DLL的簡單介紹

轉(zhuǎn)自:http://baike.baidu.com/view/4373.htm


DLL文件(Dynamic Linkable Library 即動(dòng)態(tài)鏈接庫文件),是一種不能單獨(dú)運(yùn)行的文件,它允許程序共享執(zhí)行特殊任務(wù)所必需的代碼和其他資源
比較大的應(yīng)用程序都由很多模塊組成,這些模塊分別完成相對(duì)獨(dú)立的功能,它們彼此協(xié)作來完成整個(gè) 軟件系統(tǒng)的工作。可能存在一些模塊的功能較為通用,在構(gòu)造其它軟件系統(tǒng)時(shí)仍會(huì)被使用。在構(gòu)造軟件系統(tǒng)時(shí),如果將所有模塊的源代碼都靜態(tài)編譯到整個(gè)應(yīng)用程序 EXE 文件中,會(huì)產(chǎn)生一些問題:一個(gè)缺點(diǎn)是增加了應(yīng)用程序的大小,它會(huì)占用更多的磁盤空間,程序運(yùn)行時(shí)也會(huì)消耗較大的內(nèi)存空間,造成系統(tǒng)資源的浪費(fèi);另一個(gè)缺點(diǎn) 是,在編寫大的 EXE 程序時(shí),在每次修改重建時(shí)都必須調(diào)整編譯所有源代碼,增加了編譯過程的復(fù)雜性,也不利于階段性的單元測(cè)試。
Windows 系統(tǒng)平臺(tái)上提供了一種完全不同的較有效的編程和運(yùn)行環(huán)境,你可以將獨(dú)立的程序模塊創(chuàng)建為較小的 DLL 文件,并可對(duì)它們單獨(dú)編譯和測(cè)試。在運(yùn)行時(shí),只有當(dāng) EXE 程序確實(shí)要調(diào)用這些 DLL 模塊的情況下,系統(tǒng)才會(huì)將它們裝載到內(nèi)存空間中。這種方式不僅減少了 EXE 文件的大小和對(duì)內(nèi)存空間的需求,而且使這些 DLL 模塊可以同時(shí)被多個(gè)應(yīng)用程序使用。Windows 自己就將一些主要的系統(tǒng)功能以 DLL 模塊的形式實(shí)現(xiàn)。
一般來說,DLL 是一種磁盤文件,以.dll、.DRV、.FON、.SYS 和許多以 .EXE 為擴(kuò)展名的系統(tǒng)文件都可以是 DLL。它由全局?jǐn)?shù)據(jù)、服務(wù)函數(shù)和資源組成,在運(yùn)行時(shí)被系統(tǒng)加載到調(diào)用進(jìn)程的虛擬空間中,成為調(diào)用進(jìn)程的一部分。如果與其它 DLL 之間沒有沖突,該文件通常映射到進(jìn)程虛擬空間的同一地址上。DLL 模塊中包含各種導(dǎo)出函數(shù),用于向外界提供服務(wù)。DLL 可以有自己的數(shù)據(jù)段,但沒有自己的堆棧,使用與調(diào)用它的應(yīng)用程序相同的堆棧模式;一個(gè) DLL 在內(nèi)存中只有一個(gè)實(shí)例;DLL 實(shí)現(xiàn)了代碼封裝性;DLL 的編制與具體的編程語言及編譯器無關(guān)。
在 Win32 環(huán)境中,每個(gè)進(jìn)程都復(fù)制了自己的讀/寫全局變量。如果想要與其它進(jìn)程共享內(nèi)存,必須使用內(nèi)存映射文件或者聲明一個(gè)共享數(shù)據(jù)段。DLL 模塊需要的堆棧內(nèi)存都是從運(yùn)行進(jìn)程的堆棧中分配出來的。Windows 在加載 DLL 模塊時(shí)將進(jìn)程函數(shù)調(diào)用與 DLL 文件的導(dǎo)出函數(shù)相匹配。Windows 操作系統(tǒng)對(duì) DLL 的操作僅僅是把 DLL 映射到需要它的進(jìn)程的虛擬地址空間里去。DLL 函數(shù)中的代碼所創(chuàng)建的任何對(duì)象(包括變量)都?xì)w調(diào)用它的線程或進(jìn)程所有。
調(diào)用方式:
1、靜態(tài)調(diào)用方式:由編譯系統(tǒng)完成對(duì) DLL 的加載和應(yīng)用程序結(jié)束時(shí) DLL 卸載的編碼(如還有其它程序使用該 DLL,則 Windows 對(duì) DLL 的應(yīng)用記錄減1,直到所有相關(guān)程序都結(jié)束對(duì)該 DLL 的使用時(shí)才釋放它,簡單實(shí)用,但不夠靈活,只能滿足一般要求。
隱式的調(diào)用:需要把產(chǎn)生動(dòng)態(tài)連接庫時(shí)產(chǎn)生的 .LIB 文件加入到應(yīng)用程序的工程中,想使用 DLL 中的函數(shù)時(shí),只須說明一下。隱式調(diào)用不需要調(diào)用 LoadLibrary() 和 FreeLibrary()。程序員在建立一個(gè) DLL 文件時(shí),鏈接程序會(huì)自動(dòng)生成一個(gè)與之對(duì)應(yīng)的 LIB 導(dǎo)入文件。該文件包含了每一個(gè) DLL 導(dǎo)出函數(shù)的符號(hào)名和可選的標(biāo)識(shí)號(hào),但是并不含有實(shí)際的代碼。LIB 文件作為 DLL 的替代文件被編譯到應(yīng)用程序項(xiàng)目中。
當(dāng)程序員通過靜態(tài)鏈接方式編譯生成應(yīng)用程序時(shí),應(yīng)用程序中的調(diào)用函數(shù)與 LIB 文件中導(dǎo)出符號(hào)相匹配,這些符號(hào)或標(biāo)識(shí)號(hào)進(jìn)入到生成的 EXE 文件中。LIB 文件中也包含了對(duì)應(yīng)的 DL L文件名(但不是完全的路徑名),鏈接程序?qū)⑵浯鎯?chǔ)在 EXE 文件內(nèi)部。
當(dāng)應(yīng)用程序運(yùn)行過程中需要加載 DLL 文件時(shí),Windows 根據(jù)這些信息發(fā)現(xiàn)并加載 DLL,然后通過符號(hào)名或標(biāo)識(shí)號(hào)實(shí)現(xiàn)對(duì) DLL 函數(shù)的動(dòng)態(tài)鏈接。所有被應(yīng)用程序調(diào)用的 DLL 文件都會(huì)在應(yīng)用程序 EXE 文件加載時(shí)被加載在到內(nèi)存中。可執(zhí)行程序鏈接到一個(gè)包含 DLL 輸出函數(shù)信息的輸入庫文件(.LIB文件)。操作系統(tǒng)在加載使用可執(zhí)行程序時(shí)加載 DLL。可執(zhí)行程序直接通過函數(shù)名調(diào)用 DLL 的輸出函數(shù),調(diào)用方法和程序內(nèi)部其 它的函數(shù)是一樣的。
2、動(dòng)態(tài)調(diào)用方式:是由編程者用 API 函數(shù)加載和卸載 DLL 來達(dá)到調(diào)用 DLL 的目的,使用上較復(fù)雜,但能更加有效地使用內(nèi)存,是編制大型應(yīng)用程序時(shí)的重要方式。
顯式的調(diào)用:
是指在應(yīng)用程序中用 LoadLibrary 或 MFC 提供的 AfxLoadLibrary 顯式的將自己所做的動(dòng)態(tài)連接庫調(diào)進(jìn)來,動(dòng)態(tài)連接庫的文件名即是上面兩個(gè)函數(shù)的參數(shù),再用 GetProcAddress() 獲取想要引入的函數(shù)。自此,你就可以象使用如同本應(yīng)用程序自定義的函數(shù)一樣來調(diào)用此引入函數(shù)了。在應(yīng)用程序退出之前,應(yīng)該用 FreeLibrary 或 MFC 提供的 AfxFreeLibrary 釋放動(dòng)態(tài)連接庫。直接調(diào)用 Win32 的 LoadLibary 函數(shù),并指定 DLL 的路徑作為參數(shù)。LoadLibary 返回 HINSTANCE 參數(shù),應(yīng)用程序在調(diào)用 GetProcAddress 函數(shù)時(shí)使用這一參數(shù)。GetProcAddress 函數(shù)將符號(hào)名或標(biāo)識(shí)號(hào)轉(zhuǎn)換為 DLL 內(nèi)部的地址。程序員可以決定 DLL 文件何時(shí)加載或不加載,顯式鏈接在運(yùn)行時(shí)決定加載哪個(gè) DLL 文件。使用 DLL 的程序在使用之前必須加載(LoadLibrary)加載DLL從而得到一個(gè)DLL模塊的句柄,然后調(diào)用 GetProcAddress 函數(shù)得到輸出函數(shù)的指針,在退出之前必須卸載DLL(FreeLibrary)。
正因?yàn)镈LL 有占用內(nèi)存小,好編輯等的特點(diǎn)有很多電腦病毒都是DLL格式文件。但不能單獨(dú)運(yùn)行。
動(dòng)態(tài)鏈接庫通常都不能直接運(yùn)行,也不能接收消息。它們是一些獨(dú)立的文件,其中包含能被可執(zhí)行程序或其它DLL調(diào)用來完成某項(xiàng)工作的函數(shù)。只有在其它模塊調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù)時(shí),它才發(fā)揮作用。

posted on 2009-04-02 09:22 shongbee2 閱讀(809) 評(píng)論(4)  編輯 收藏 引用 所屬分類: windows相關(guān)

評(píng)論

# re: 【轉(zhuǎn)】DLL的簡單介紹 2009-04-02 10:14 Sunshine Alike

哈,不錯(cuò)。搞明白了些東西!  回復(fù)  更多評(píng)論   

# re: 【轉(zhuǎn)】DLL的簡單介紹 2009-04-02 12:48 shongbee2

@Sunshine Alike
哈哈,很高興能給您帶來幫助。加油。
  回復(fù)  更多評(píng)論   

# re: 【轉(zhuǎn)】DLL的簡單介紹 2009-04-02 17:51 Sunshine Alike

@shongbee2
我還屬于菜鳥一級(jí),問題多多,請(qǐng)多指教!大家一起進(jìn)步  回復(fù)  更多評(píng)論   

# re: 【轉(zhuǎn)】DLL的簡單介紹 2009-04-05 14:52 shongbee2

哈哈。我也是菜鳥。大家加油。呵呵  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美国产日本在线| 欧美色图一区二区三区| 国产视频欧美视频| 久久综合99re88久久爱| 欧美大片免费观看| 亚洲欧美中文日韩v在线观看| 欧美一区二区日韩| 亚洲精品视频一区| 欧美一站二站| 99在线热播精品免费| 欧美一级大片在线观看| 99视频热这里只有精品免费| 午夜久久久久久| 一本色道久久综合亚洲精品不卡| 欧美一区中文字幕| 亚洲一区二区三区四区视频 | 黄色综合网站| 99av国产精品欲麻豆| 伊人久久综合97精品| 亚洲欧美日韩综合aⅴ视频| 99天天综合性| 欧美风情在线| 欧美刺激性大交免费视频| 国产视频在线观看一区二区三区| 亚洲精品免费电影| 黄色成人在线网址| 午夜精品久久久久| 亚洲欧美日韩国产中文| 欧美精品一区在线| 欧美激情精品久久久久久黑人| 国产一区二区精品| 先锋影音一区二区三区| 亚洲欧美文学| 欧美视频在线视频| av成人福利| 一本色道久久精品| 欧美激情一二区| 亚洲电影第三页| 欲色影视综合吧| 久久久久**毛片大全| 久久久久久亚洲精品杨幂换脸 | 美女在线一区二区| 欧美在线free| 欧美日韩视频在线| 亚洲欧洲日韩女同| 91久久夜色精品国产九色| 久久免费精品视频| 免费在线看一区| 18成人免费观看视频| 久久五月婷婷丁香社区| 欧美黑人多人双交| 欧美午夜精品一区二区三区| 91久久久精品| 日韩系列欧美系列| 欧美日韩一区二区三区四区五区| 亚洲精选中文字幕| 亚洲一区二区三区免费在线观看| 欧美午夜免费电影| 亚洲一区三区电影在线观看| 欧美一区国产在线| 国产综合av| 免费欧美日韩| 日韩一级在线观看| 欧美一二三视频| 精久久久久久| 欧美激情一二三区| 亚洲一区二区三区免费视频| 久久久久天天天天| 亚洲精品视频在线播放| 欧美天天综合网| 亚久久调教视频| 欧美成人四级电影| 一区二区三区国产在线| 国产精品黄视频| 午夜一区二区三视频在线观看| 老色批av在线精品| 亚洲激情av| 国产精品视频成人| 噜噜噜噜噜久久久久久91| 999亚洲国产精| 久久人人爽人人爽爽久久| 亚洲精品一区二区三区樱花| 国产精品日本精品| 蜜臀va亚洲va欧美va天堂| 亚洲午夜精品一区二区三区他趣| 久久久久久一区| 99精品国产在热久久下载| 国产欧美日韩不卡| 欧美精品一卡| 欧美在线视频不卡| 99re6热只有精品免费观看| 久久人人97超碰精品888| 国产精品99久久久久久久女警| 国产亚洲一级| 欧美日韩免费观看一区=区三区| 欧美一区二区三区婷婷月色| 亚洲黄色免费电影| 欧美中文字幕视频| av成人免费观看| 好吊色欧美一区二区三区视频| 欧美女同在线视频| 久久久免费观看视频| 亚洲一区二区日本| 亚洲人成在线观看| 男人的天堂成人在线| 性感少妇一区| 一区二区三区国产| 亚洲国产另类精品专区| 国产色爱av资源综合区| 欧美精品自拍| 欧美jizz19hd性欧美| 欧美一区中文字幕| 亚洲一区二区成人| 亚洲美女尤物影院| 欧美人与禽猛交乱配视频| 欧美精品国产一区二区| 亚洲主播在线| 日韩午夜激情| 亚洲国产欧美一区二区三区久久| 欧美一区二区三区在线| 中文欧美在线视频| 亚洲精品中文字| 亚洲高清毛片| 影音先锋成人资源站| 国内精品美女在线观看| 国产亚洲欧美日韩精品| 国产日韩欧美成人| 国产日韩亚洲| 国产亚洲综合在线| 国产日韩亚洲欧美综合| 国产精品日韩在线| 国产精品卡一卡二卡三| 国产精品久久久久一区| 国产精品国产精品国产专区不蜜| 欧美日韩成人综合天天影院| 欧美精品18+| 欧美日韩蜜桃| 国产精品久久波多野结衣| 国产精品卡一卡二卡三| 国产精品a久久久久| 国产精品你懂的| 国产欧美日韩亚洲| 国产综合色产| 在线精品一区| 亚洲人线精品午夜| 日韩午夜黄色| 亚洲一区二区在线免费观看视频| 宅男在线国产精品| 新狼窝色av性久久久久久| 久久成人18免费观看| 久久国内精品自在自线400部| 久久久久久网站| 欧美国产日韩xxxxx| 亚洲国产婷婷香蕉久久久久久| 亚洲国产视频a| 一区二区三区免费网站| 亚洲欧美日韩一区二区| 久久精品在线视频| 牛牛国产精品| 国产精品国产三级国产a| 国产亚洲欧美日韩精品| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲人精品午夜在线观看| 亚洲黄色一区二区三区| 日韩视频一区| 午夜精品影院| 欧美xx69| 中国成人黄色视屏| 久久久精品日韩欧美| 欧美日本中文| 国产一区欧美| 99re66热这里只有精品4| 午夜精品视频在线观看| 欧美69视频| 这里只有视频精品| 久久九九国产精品| 欧美体内she精视频在线观看| 国产在线拍揄自揄视频不卡99| 亚洲欧洲综合另类| 久久av二区| 亚洲欧洲日产国码二区| 欧美一区影院| 欧美视频日韩视频| 欲香欲色天天天综合和网| 亚洲欧美成aⅴ人在线观看| 欧美电影在线观看完整版| 亚洲天堂av高清| 免费视频久久| 国产亚洲欧美激情| 亚洲视频观看| 欧美国产亚洲精品久久久8v| 亚洲在线1234| 欧美激情综合亚洲一二区| 国产一区二区日韩精品欧美精品| 99国内精品久久| 欧美国产另类| 久久国产精品一区二区| 亚洲在线网站| 国产精品盗摄久久久| 在线观看日韩av电影|