DLL的概念
一般來說,DLL是一種磁盤文件,以.DLL、.DRV、.FON、.SYS和許多以.EXE為擴展名的係統文件都可以是DLL。它由全局數據、服務函數和資源組成,在運行時被係統加載到進程的虛擬空間中,成為調用進程的一部分。如果與其它DLL之間沒有衝突,該文件通常映射到進程虛擬空間的同一地址上。DLL模塊中包含各種導出函數,用於向外界提供服務。DLL可以有自己的數據段,但沒有自己的堆棧,使用與調用它的應用程序相同的堆棧模式;一個DLL在內存中隻有一個實例;DLL實現了代碼封裝性;DLL的編製與具體的編程語言及編譯器無關。
至於作用,先說說沒有dll的後果:比較大的應用程序都由很多模塊組成,這些模塊分別完成相對獨立的功能,它們彼此協作來完成整個軟件係統的工作。可能存在一些模塊的功能較為通用,在構造其它軟件係統時仍會被使用。在構造軟件係統時,如果將所有模塊的源代碼都靜態編譯到整個應用程序EXE文件中,會產生一些問題:一個缺點是增加了應用程序的大小,它會占用更多的磁盤空間,程序運行時也會消耗較大的內存空間,造成係統資源的浪費;另一個缺點是,在編寫大的EXE程序時,在每次修改重建時都必須調整編譯所有源代碼,增加了編譯過程的複雜性,也不利於階段性的單元測試。
有了dll的好處:在Windows係統平台上提供了一種完全不同的較有效的編程和運行環境,你可以將獨立的程序模塊創建為較小的DLL(Dynamic Linkable Library)文件,並可對它們單獨編譯和測試。在運行時,隻有當EXE程序確實要調用這些DLL模塊的情況下,係統才會將它們裝載到內存空間中。這種方式不僅減少了EXE文件的大小和對內存空間的需求,而且使這些DLL模塊可以同時被多個應用程序使用。Windows自己就將一些主要的係統功能以DLL模塊的形式實現。
最後更新:2017-04-02 06:51:35