- 相關推薦
Windows的動態鏈接庫
初窺門徑:Windows的基石
隨便打開一個系統目錄,一眼望去就能看到很多擴展名DLL的文件,這些就是經常說的“動態鏈接庫”,DLL是Dynamic Link Library(即“動態鏈接庫”)的縮寫。從Microsoft公司推出首個版本的Windows以來,動態鏈接庫就一直是這個操作系統的基礎。
1.看看DLL里有什么
與其用晦澀的專業術語來解決DLL是什么,不如先來看看DLL里有什么。DLL和EXE文件一樣,其中包含的也是程序的二進制執行代碼和程序所需的資源(比如圖標、對話框、字符串等),可是為什么要把代碼放在DLL里面,而不是做成EXE呢?其實DLL中的代碼是以API函數形式出現的,通俗地說,DLL中包含的程序代碼都被做成了一個個小模塊,應用程序通過按下所需DLL中特定的按鈕,來調用DLL中這個按鈕所代表的功能。在使用“記事本”等程序時,如果要保存文件或打開文件,就會彈出通用文件對話框,讓我們選擇文件位置。你可知道,這就是調用了系統底層DLL中的通用對話框界面。
2.系統中幾個重要的DLL
Windows中有3個非常重要的底層DLL:Kernel32.dll、User32.dll、GDI32.dll。其中Kernel32.dll顧名思義就是內核相關的功能,主要包含用于管理內存、進程和線程的函數;而User32.dll中包含的則是用于執行用戶界面任務的函數,比如把用戶的鼠標點擊操作傳遞給窗口,以便窗口根據用戶的點擊來執行預定的事件;GDI32.dll的名稱用了縮寫,全稱是Graphical Device Interface(圖形設備接口),包含用于畫圖和顯示文本的函數,比如要顯示一個程序窗口,就調用了其中的函數來畫這個窗口。
3.為什么要用DLL
剛才在談到這個問題的時候,我們只是解釋了DLL將程序代碼封裝成函數的原理。為什么封裝成函數,就能成為系統中大量使用DLL的理由呢?
①擴展應用程序
由于DLL能被應用程序動態載入內存。所以,應用程序可以在需要時才將DLL載入到內存中,這讓程序的可維護性變得很高。比如QQ的視頻功能需要升級,那么負責編寫QQ的程序員不必將QQ所有代碼都重寫,只需將視頻功能相關的DLL文件重寫即可。
②便于程序員合作
這個和我們最終用戶關系不大,僅供了解。我們都知道編程工具有很多,比如VB、VC、Delphi等,如果好幾個人合作來編寫一個大的程序,那么可能有的人用VB,有的人用VC,每人負責的部分所使用的編程語言都不同,究竟放在哪個編譯器中進行編譯呢?這就好比一群來自各個國家的人在共同編寫一篇文章,如果他們所使用的語言都不同,寫出來的文章怎么可能湊到一起呢?而有了DLL后,可以讓VC程序員寫一個DLL,然后VB程序員在程序中調用,無需為怎么將它們都編譯為一個單獨的EXE而發愁了。
③節省內存
如果多個應用程序調用的是同一個動態鏈接庫,那么這個DLL文件不會被重復多次裝入內存中,而是由這些應用程序共享同一個已載入內存的DLL。就好比一個辦公室中,很少會為每一個員工配置一臺飲水機的,而是在一個公共位置放上一個飲水機,所有需要喝水的職員都可以共用這臺飲水機,降低了成本又節約了空間。
④共享程序資源
包括剛才提到過的通用文件對話框在內,DLL文件提供了應用程序間共享資源的可能。資源可以是程序對話框、字符串、圖標,或者聲音文件等。
⑤解決應用程序本地化問題
在下載了某個程序的漢化包后,打開漢化說明,經常可以看到用下載包中的DLL文件覆蓋掉程序原來的DLL,漢化就完成了。這些程序都是將執行代碼和應用程序界面分開編寫了,所以漢化者只需簡單地將其中和程序界面相關的DLL漢化并發布即可。
【Windows的動態鏈接庫】相關文章:
windows鍵是哪個03-27
windows運行命令大全08-10
Windows 2003的安裝攻略10-14
Windows實用的操作技巧09-08
Windows勒索病毒防范方法06-03
Windows常用快捷鍵07-19
如何關閉windows安全警報06-04
怎么關閉windows安全警報06-04
Windows系統的安全策略03-09
Windows XP刻錄光盤的教程03-03