天天看點

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子產品的形式實作。

上一篇: 快速排序
下一篇: new和delete