學習筆記 | 靜態鏈接庫、動態鏈接庫

01 DLL文件是什麼?它有幾種調用方式?

  • DLL文件(Dynamic Linkable Library即動態鏈接庫文件),是一種不能單獨運行的文件,它允許程序共享執行特殊任務所必需的代碼和其他資源。
  • 比較大的應用程序都由很多模塊組成,這些模塊分別完成相對獨立的功能,它們彼此協作來完成整個軟件系統的工作。可能存在一些模塊的功能較爲通用,在構造其他軟件系統時仍會被使用。
  • 在構造軟件系統時,如果將所有模塊的源代碼都靜態編譯到整個應用程序EXE文件中,會產生一些問題:一個是增加了應用程序的大小,會佔用更多的磁盤空間,程序運行時也會消耗較大的內存空間,造成系統資源的浪費;另一個是,在編寫大的EXE程序時,在每次修改重建時都必須調整編譯所有源代碼,增加了編譯過程的複雜性,也不利於階段性的單元測試。
  • 一般來說,DLL是一種磁盤文件,以.dll、.DRV、.FON、.SYS和許多以 .EXE爲擴展名的系統文件都可以是DLL。 它由全局數據、服務函數和資源組成,在運行時被系統加載到調用進程的虛擬空間中,成爲調用進程的一部分。如果與其他DLL之間沒有衝突,該文件通常映射到進程虛擬空間的同一地址上。
  • DLL模塊中包含各種導出函數,用於向外界提供服務。
  • DLL可以有自己的數據段,但沒有自己的堆棧,使用與調用它的應用程序是相同的堆棧模式;
  • 一個DLL在內存中只有一個實例;
  • DLL實現了代碼封裝性;
  • DLL的編制與具體的編程語言及編譯器無關。
調用方式有以下兩種。
  • 靜態調用方式:由編譯系統完成對DLL的加載和應用程序結束時DLL卸載的編碼(如還有其他程序使用該DLL,則W indows對DLL的應用記錄減1,直到所有相關程序都結束對該DLL的使用時才釋放它,此方式簡單實用,但不夠靈活,只能滿足一般要求。
  • 動態調用方式:是由編程者用AP I函數加載和卸載DLL來達到調用DL L的目的,使用上較複雜,但能更加有效地使用內存,是編制大型應用程序時的重要方式。
  • 正因爲DLL有佔用內存小,好編輯等特點,所以有很多電腦病毒都是DLL格式文件。但不能單獨運行。動態鏈接庫通常都不能直接運行,也不能接收消息。它們是一些獨立的文件,其中包含能被可執行程序或其他DLL調用來完成某項工作的函數。只有在其他模塊調用動態鏈接庫中的函數時,它才發揮作用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章