動態鏈接庫是應用程序的一個模塊,這個模塊用于導出一些函數和數據供程序中的其他模塊使用。應該從一下3個方面來理解這個概念:
1、動態鏈接庫是應用程序的一部分,他的任何操作都是代表應用程序進行的。所以動態鏈接庫在本質上與可執行文件沒有區別,都是作為模塊被進程加載道自己的地址空間的。
2、動態鏈接庫在程序編譯時并不會被插入到可執行文件中,在程序運行時整個庫的代碼才會調入內存,這就是所謂的“動態鏈接”。
3、如果有多個程序用到同一個動態鏈接庫,windows在物理內存中只保留一份庫的代碼,僅通過分頁機制將這份代碼映射到不同的進程中。這樣,不管有多少程序同時使用一個庫,庫代碼實際占用的物理內存永遠只有一份。
動態鏈接庫的縮寫是DLL,大部分動態鏈接庫鏡像文件的擴展名為dll,但擴展名為其他的文件也有可能是動態鏈接庫,如系統中的某些exe文件,各種控件(*.ocx),等都是動態鏈接庫。