當前位置:編程學習大全網 - 源碼下載 - 什麽是靜態鏈接庫?什麽是動態鏈接庫?他們有什麽區別

什麽是靜態鏈接庫?什麽是動態鏈接庫?他們有什麽區別

壹、動態鏈接庫的概念

動態鏈接庫(Dynamic Link Library,縮寫為DLL)是壹個可以被其它應用程序***享的程序模塊,其中封裝了壹些可以被***享的例程和資源。動態鏈接庫文件的擴展名壹般是dll,也有可能是drv、sys和fon,它和可執行文件(exe)非常類似,區別在於DLL中雖然包含了可執行代碼卻不能單獨執行,而應由Windows應用程序直接或間接調用。

動態鏈接是相對於靜態鏈接而言的。所謂靜態鏈接是指把要調用的函數或者過程鏈接到可執行文件中,成為可執行文件的壹部分。換句話說,函數和過程的代碼就在程序的exe文件中,該文件包含了運行時所需的全部代碼。當多個程序都調用相同函數時,內存中就會存在這個函數的多個拷貝,這樣就浪費了寶貴的內存資源。而動態鏈接所調用的函數代碼並沒有被拷貝到應用程序的可執行文件中去,而是僅僅在其中加入了所調用函數的描述信息(往往是壹些重定位信息)。僅當應用程序被裝入內存開始運行時,在Windows的管理下,才在應用程序與相應的DLL之間建立鏈接關系。當要執行所調用DLL中的函數時,根據鏈接產生的重定位信息,Windows才轉去執行DLL中相應的函數代碼。

壹般情況下,如果壹個應用程序使用了動態鏈接庫,Win32系統保證內存中只有DLL的壹份復制品,這是通過內存映射文件實現的。DLL首先被調入Win32系統的全局堆棧,然後映射到調用這個DLL的進程地址空間。在Win32系統中,每個進程擁有自己的32位線性地址空間,如果壹個DLL被多個進程調用,每個進程都會收到該DLL的壹份映像。

  • 上一篇:想在內網網站增加郵箱功能,請問哪種郵箱軟件比較好?
  • 下一篇:;妳什麽意思,硬件呢?
  • copyright 2024編程學習大全網