久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

動態(tài)鏈接庫(dll)簡介

 昵稱34122805 2016-06-15

DLL 是 Dynamic Link Library 的縮寫,,譯為“動態(tài)鏈接庫”。DLL也是一個被編譯過的二進制程序,,可以被其他程序調(diào)用,,但與 exe 不同,DLL不能獨立運行,,必須由其他程序調(diào)用載入內(nèi)存,。

DLL 中封裝了很多函數(shù),只要知道函數(shù)的入口地址,,就可以被其他程序調(diào)用,。

Windows API中所有的函數(shù)都包含在DLL中,其中有3個最重要的DLL:

  • Kemel32.dll:它包含那些用于管理內(nèi)存,、進程和線程的函數(shù),,例如CreateThread函數(shù);
  • User32.dll:它包含那些用于執(zhí)行用戶界面任務(如窗口的創(chuàng)建和消息的傳送)的函數(shù),,例如 CreateWindow 函數(shù),;
  • GDI32.dll:它包含那些用于畫圖和顯示文本的函數(shù)。

靜態(tài)鏈接庫和動態(tài)鏈接庫

1) 靜態(tài)庫

函數(shù)和數(shù)據(jù)被編譯進一個二進制文件(通常擴展名為.LIB),。在使用靜態(tài)庫的情況下,, 在編譯鏈接可執(zhí)行文件時,鏈接器從庫中復制這些函數(shù)和數(shù)據(jù)并把它們和應用程序的其他模塊組合起來創(chuàng)建最終的可執(zhí)行文件(.EXE文件),。當發(fā)布產(chǎn)品時,,只需要發(fā)布這個可執(zhí)行文件,并不需要發(fā)布被使用的靜態(tài)庫,。

2) 動態(tài)庫

在使用動態(tài)庫的時候,,往往提供兩個文件:一個引入庫(.lib)文件和一個DLL (.dll) 文件,。雖然引入庫的后綴名也是“l(fā)ib”,但是,,動態(tài)庫的引入庫文件和靜態(tài)庫文件有著本質(zhì)上的區(qū)別,,對一個DLL來說,其引入庫文件(.lib)包含該DLL導出的函數(shù)和變量的符號名,,而.dll文件包含該DLL實際的函數(shù)和數(shù)據(jù),。在使用動態(tài)庫的情況下,在編譯鏈接可執(zhí)行文件時,,只需要鏈接該DLL的引入庫文件,,該DLL中的函數(shù)代碼和數(shù)據(jù)并不復制到可執(zhí)行文件中,直到可執(zhí)行程序運行時,,才去加載所需的DLL,,將該DLL映射到進程的地址空間中,然后訪問DLL中導出的函數(shù),。這時,,在發(fā)布產(chǎn)品時,除了發(fā)布可執(zhí)行文件以外,,同時還要發(fā)布該程序?qū)⒁{(diào)用的動態(tài)鏈接庫,。

使用動態(tài)鏈接庫的好處

1) 可以采用多種編程語言來編寫

我們可以采用自己熟悉的開發(fā)語言編寫DLL,然后由其他語言編寫的可執(zhí)行程序來調(diào)用這些DLL,。例如,,可以利用VB來編寫程序的界面,然后調(diào)用利用VC++或Delphi編寫的完成程序業(yè)務邏輯的DLL,。

2) 增強產(chǎn)品的功能

在發(fā)布產(chǎn)品時,可以發(fā)布產(chǎn)品功能實現(xiàn)的動態(tài)鏈接庫規(guī)范,,讓其他公司或個人遵照這個規(guī)范開發(fā)自己的DLL,,以取代產(chǎn)品原有的DLL,讓產(chǎn)品調(diào)用新的DLL,,從而實現(xiàn)功能 的增強,。在實際工作中,我們看到許多產(chǎn)品都提供了界面插件功能,,允許用戶動態(tài)地更換程序的界面,,這就可以通過更換界面DLL來實現(xiàn)。

3) 提供二次開發(fā)的平臺

在銷售產(chǎn)品的同時,,可以采用DLL的形式提供一個二次開發(fā)的平臺,,讓用戶可以利用該DLL調(diào)用其中實現(xiàn)的功能,編寫符合自己業(yè)務需要的產(chǎn)品,,從而實現(xiàn)二次開發(fā),。

4) 簡化項目管理

在一個大型項目開發(fā)中,,通常都是由多個項目小組同時開發(fā),如果采用串行開發(fā),,則效率是非常低的,。我們可以將項目細分,將不同功能交由各項目小組以多個DLL的方式實現(xiàn),,這樣,,各個項目小組就可以同時進行開發(fā)了。

5) 可以節(jié)省磁盤空間和內(nèi)存

如果多個應用程序需要訪問同樣的功能,,那么可以將該功能以DLL的形式提供,,這樣在機器上只需要存在一份該DLL文件就可以了,從而節(jié)省了磁盤空間,。另外,,如果多個應用程序使用同一個DLL,該DLL只需要放入內(nèi)存一次,,所有的應用程序就都可以共亨它了,。這樣,內(nèi)存的使用將更加有效,。

我們知道,,當進程被加載時,系統(tǒng)會為它分配內(nèi)存,,接著分析該可執(zhí)行模塊,,找到該程序?qū)⒁{(diào)用哪些DLL,然后系統(tǒng)搜索這些DLL,,找到后就加載它們,,并為它們分配內(nèi)存空間。DLL的內(nèi)存空間只有一份,,如果有第二個程序也需要加載該DLL,,那么它們共享內(nèi)存空間,相同的DLL不會再次加載,。

6) 有助于資源的共享

DLL可以包含對話框模板,、字符串、圖標和位圖等多種資源,,多個應用程序可以使用DLL來共享這些資源,。在實際工作中,可以編寫一個純資源的動態(tài)鏈接庫,,供其他應用程序訪問,。

7) 有助于實現(xiàn)應用程序的本地化

如果產(chǎn)品需要提供多語言版本,那么就可以使用DLL來支持多語言??梢詾槊糠N語言創(chuàng)建一個只支持這種語言的動態(tài)鏈接庫,。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多