DLL文件概念及相關

 
應用程序和 DLL 之間的區別
儘管 DLL 和應用程序都是可執行的程序模塊,但它們之間有若干不同之處。對於最終用戶來說,最明顯的差異在於 DLL 不是可直接執行的程序。從系統角度講,應用程序和 DLL 之間有兩個基本差異:
  • 應用程序可有多個同時在系統上運行的實例,而 DLL 只能有一個實例。
  • 應用程序可以擁有堆棧、共用內存、文件句柄、消息隊列這樣的事物,而 DLL 不能。
使用 DLL 的優點
動態鏈接具有下列優點:
  • 節省內存和減少交換操作。很多進程可以同時使用一個 DLL,在內存中共享該 DLL 的一個副本。相反,對於每個用靜態鏈接庫生成的應用程序,Windows 必須在內存中加載庫代碼的一個副本。
  • 節省磁盤空間。許多應用程序可在磁盤上共享 DLL 的一個副本。相反,每個用靜態鏈接庫生成的應用程序均具有作爲單獨的副本鏈接到其可執行圖像中的庫代碼。
  • 升級到 DLL 更爲容易。當 DLL 中的函數發生更改時,只要函數的參數和返回值沒有更改,就不需重新編譯或重新鏈接使用它們的應用程序。相反,靜態鏈接的對象代碼要求在函數更改時重新鏈接應用程序。
  • 提供售後支持。例如,可修改顯示器驅動程序 DLL 以支持當初交付應用程序時不可用的顯示器。
  • 支持多語言程序。只要程序遵循函數的調用約定,用不同編程語言編寫的程序就可以調用相同的 DLL 函數。程序與 DLL 函數在下列方面必須是兼容的:函數期望其參數被推送到堆棧上的順序,是函數還是應用程序負責清理堆棧,以及寄存器中是否傳遞了任何參數。
  • 提供了擴展 MFC 庫類的機制。可以從現有 MFC 類派生類,並將它們放到 MFC 擴展 DLL 中供 MFC 應用程序使用。
  • 使國際版本的創建輕鬆完成。通過將資源放到 DLL 中,創建應用程序的國際版本變得容易得多。可將用於應用程序的每個語言版本的字符串放到單獨的 DLL 資源文件中,並使不同的語言版本加載合適的資源。
使用 DLL 的一個潛在缺點是應用程序不是獨立的;它取決於是否存在單獨的 DLL 模塊。
 
 

0

收藏

zhangjuanyong

21篇文章,19W+人氣,0粉絲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章