你是否有過這樣的經歷,在配置不是很好的機器上運行一些不是很完善的Windows 應用程序,系統速度越來越慢,直至彈出一個警告對話框,系統資源嚴重不足請關閉部分Windows 應用程序,這往往是靜態鏈接的緣故。使用普通的函數庫,在程序鏈接時將庫中的代碼拷貝到可執行文件中這叫作靜態鏈接。假設有多個程序同時執行并且都調用了同一個動態鏈接庫,這時內存中就會保留許多重復的代碼副本。
使用動態鏈接庫則不一樣,只有程序在執行時才將庫代碼裝入內存,對于同一個動態鏈接庫無論有多少個應用程序同時在使用它,內存中都只有一個動態鏈接庫的副本。如果動態鏈接庫不再被任何程序使用,系統就將它調出內存,這就減少了應用程序對內存的要求。
動態鏈接庫是一種程序模塊,它不僅可以包含可執行代碼,而且通常還包含了各種類型的預定義的數據和資源,擴大了庫文件的使用范圍。Windows 操作系統使用了許多動態鏈接庫,比如我們使用Visual C++建立MFC 應用程序時,如果在AppWizard向導中選擇了使用MFC 作為動態鏈接庫,那么所有這種類型的程序至少都共用了C:/Windows/System 目錄下的MFC 動態鏈接庫文件Msvcrt.dll 和Mfc42.dll ,許多設備的驅動程序也是用動態鏈接庫實現的,擴展名一般為.drv。動態鏈接庫技術常常用于開發大型軟件系統,一個大型系統如果只通過一個可執行文件來完成那程序就太龐大了,而且可能有許多重復的功能,這時如果將程序分解由一系列主程序和動態鏈接庫組成,這就減少了開發難度和工作量,提高了訪問的速度,更有利于對整個系統的管理。
動態鏈接庫的另一個用途是,軟件產品國際化開發人員可以將依賴于各國語言的資源分離開來各自放進專門的動態鏈接庫中,各國不同的用戶可以在安裝和運行時選擇適當語言版本的動態鏈接庫,這樣主程序不用改變就可以用于全球范圍。這是實現軟件國際化的一項技術,知道了動態鏈接庫的這些特點,相信讀者不難明白為什么動態鏈接庫的應用那么廣泛了。
新聞熱點
疑難解答