當前位置:編程學習大全網 - 編程語言 - 什麽是動態鏈接庫(DLL)以及常見問題

什麽是動態鏈接庫(DLL)以及常見問題

概要 本文說明什麽是動態鏈接庫 (DLL) 以及在使用 DLL 時可能發生的各種問題。 然後,本文說明在開發您自己的 DLL 時應該考慮的壹些高級問題。在說明什麽是 DLL 的過程中,本文將說明動態鏈接方法、DLL 依賴性、DLL 入口點、導出 DLL 函數以及 DLL 故障排除工具。 本文最後將從較高的層次對 DLL 與 Microsoft .NET Framework 程序集作壹比較。 簡介 對於“適用於”壹節中列出的 Microsoft Windows 操作系統,操作系統的大量功能是由動態鏈接庫 (DLL) 提供的。另外,當您在這些 Windows 操作系統之壹上運行某壹程序時,該程序的很多功能可能是由 DLL 提供的。例如,某些程序可能包含很多不同的模塊,而該程序的每個模塊都包含在 DLL 中並從中分發。 使用DLL 有助於促進代碼的模塊化、代碼重用、內存的有效使用和減少所占用的磁盤空間。因此,操作系統和程序能夠更快地加載和運行,並且在計算機中占用較少的磁盤空間。 當程序使用 DLL 時,壹個稱為依賴性的問題可能導致該程序無法運行。當程序使用 DLL 時,就會創建壹個依賴項。如果其他程序改寫和損壞了該依賴項,原來的那個程序就可能無法成功運行。 在引入 Microsoft .NET Framework 之後,大多數依賴性問題都已經通過使用程序集消除了。 什麽是 DLL? DLL 是壹個包含可由多個程序同時使用的代碼和數據的庫。例如,在 Windows 操作系統中,Comdlg32 DLL 執行與對話框有關的常見函數。因此,每個程序都可以使用該 DLL 中包含的功能來實現“打開”對話框。這有助於促進代碼重用和內存的有效使用。 通過使用 DLL,程序可以實現模塊化,由相對獨立的組件組成。例如,壹個計帳程序可以按模塊來銷售。可以在運行時將各個模塊加載到主程序中(如果安裝了相應模塊)。因為模塊是彼此獨立的,所以程序的加載速度更快,而且模塊只在相應的功能被請求時才加載。 此外,可以更為容易地將更新應用於各個模塊,而不會影響該程序的其他部分。例如,您可能具有壹個工資計算程序,而稅率每年都會更改。當這些更改被隔離到 DLL 中以後,您無需重新生成或安裝整個程序就可以應用更新。 下表說明了 Windows 操作系統中的壹些作為 DLL 實現的文件: ?6?1ActiveX 控件 (.ocx) 文件 ActiveX 控件的壹個示例是日歷控件,它使您可以從日歷中選擇日期。 ?6?1控制面板 (.cpl) 文件 .cpl 文件的壹個示例是位於控制面板中的項。每個項都是壹個專用 DLL。 ?6?1設備驅動程序 (.drv) 文件 設備驅動程序的壹個示例是控制打印到打印機的打印機驅動程序。 DLL 的優點 下表說明了當程序使用 DLL 時提供的壹些優點: ?6?1使用較少的資源 當多個程序使用同壹個函數庫時,DLL 可以減少在磁盤和物理內存中加載的代碼的重復量。這不僅可以大大影響在前臺運行的程序,而且可以大大影響其他在 Windows 操作系統上運行的程序。 ?6?1推廣模塊式體系結構 DLL 有助於促進模塊式程序的開發。這可以幫助您開發要求提供多個語言版本的大型程序或要求具有模塊式體系結構的程序。模塊式程序的壹個示例是具有多個可以在運行時動態加載的模塊的計帳程序。 ?6?1簡化部署和安裝 當DLL 中的函數需要更新或修復時,部署和安裝 DLL 不要求重新建立程序與該 DLL 的鏈接。此外,如果多個程序使用同壹個 DLL,那麽多個程序都將從該更新或修復中獲益。當您使用定期更新或修復的第三方 DLL 時,此問題可能會更頻繁地出現。 DLL 依賴項 當某個程序或 DLL 使用其他 DLL 中的 DLL 函數時,就會創建依賴項。因此,該程序就不再是獨立的,並且如果該依賴項被損壞,該程序就可能遇到問題。例如,如果發生下列操作之壹,則該程序可能無法運行: ?6?1依賴 DLL 升級到新版本。 ?6?1修復了依賴 DLL。 ?6?1依賴 DLL 被其早期版本覆蓋。 ?6?1從計算機中刪除了依賴 DLL。 這些操作通常稱為 DLL 沖突。如果沒有強制實現向後兼容性,則該程序可能無法成功運行。 下表說明了為了幫助最大限度地減少依賴性問題而在 Microsoft Windows 2000 和較高版本的 Windows 操作系統中引入的更改: ?6?1Windows 文件保護 在Windows 文件保護中,操作系統禁止未經授權的代理更新或刪除系統 DLL。因此,當程序安裝操作嘗試刪除或更新被定義為系統 DLL 的 DLL 時,Windows 文件保護將尋找有效的數字簽名。 ?6?1專用 DLL 通過專用 DLL 可以使程序避免遭受對***享 DLL 進行的更改。專用 DLL 使用版本特定信息或空 .local 文件來強制要求程序所使用的 DLL 的版本。要使用專用 DLL,請在程序根文件夾中查找 DLL。然後,對於新程序,請向該 DLL 中添加版本特定信息。對於舊程序,請使用空 .local 文件。每個方法都告訴操作系統使用位於程序根文件夾中的專用 DLL。

  • 上一篇:如何低成本實現NAS+HTPC+軟路由+電視盒子+遊戲盒子?
  • 下一篇:筆記本突然自動重啟的解決方法有哪些
  • copyright 2024編程學習大全網