DLL文件

DLL文件

軟件文件類型
DLL(Dynamic Link Library)文件為動态鍊接庫文件,又稱“應用程序拓展”,是軟件文件類型[1]。在Windows中,許多應用程序并不是一個完整的可執行文件,它們被分割成一些相對獨立的動态鍊接庫,即DLL文件,放置于系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可使用多個DLL文件,一個DLL文件也可能被不同的應用程序使用,這樣的DLL文件被稱為共享DLL文件。
    中文名:動态鍊接庫 外文名:Dynamic Link Library 所屬學科: 簡稱:DLL 屬性:軟件文件類型 應用平台:Windows

鍊接方法

當您在應用程序中加載 DLL 時,可以使用兩種鍊接方法來調用導出的 DLL 函數。這兩種鍊接方法是加載時動态鍊接和運行時動态鍊接。

在運行時動态鍊接中,應用程序調用 LoadLibrary 函數或 LoadLibraryEx 函數以在運行時加載 DLL。成功加載DLL後,可以使用 GetProcAddress 函數獲得要調用的導出的 DLL 函數的地址。在使用運行時動态鍊接時,無需使用導入庫文件。

Win32 DLL的特點

Win32 DLL與 Win16 DLL有很大的區别,這主要是由操作系統的設計思想決定的。一方面,在Win16 DLL中程序入口點函數和出口點函數(LibMain和WEP)是分别實現的;而在Win32 DLL中卻由同一函數DLLMain來實現。無論何時,當一個進程或線程載入和卸載DLL時,都要調用該函數,它的原型是

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);

其中,第一個參數表示DLL的實例句柄;第三個參數系統保留;這裡主要介紹一下第二個參數,它有四個可能的值:DLL_PROCESS_ATTACH(進程載入),DLL_THREAD_ATTACH(線程載入),DLL_THREAD_DETACH(線程卸載),DLL_PROCESS_DETACH(進程卸載),在DLLMain函數中可以對傳遞進來的這個參數的值進行判别,并根據不同的參數值對DLL進行必要的初始化或清理工作。

舉個例子來說,當有一個進程載入一個DLL時,系統分派給DLL的第二個參數為DLL_PROCESS_ATTACH,這時,可以根據這個參數初始化特定的數據。另一方面,在Win16環境下,所有應用程序都在同一地址空間;而在Win32環境下,所有應用程序都有自己的私有空間,每個進程的空間都是相互獨立的,這減少了應用程序間的相互影響,但同時也增加了編程的難度。

在Win16環境中,DLL的全局數據對每個載入它的進程來說都是相同的;而在Win32環境中,情況卻發生了變化,當進程在載入DLL時,系統自動把DLL地址映射到該進程的私有空間,而且也複制該DLL的全局數據的一份拷貝到該進程空間,也就是說每個進程所擁有的相同的DLL的全局數據其值卻并不一定是相同的。

因此,在Win32環境下要想在多個進程中共享數據,就必須進行必要的設置。亦即把這些需要共享的數據分離出來,放置在一個獨立的數據段裡,并把該段的屬性設置為共享。​

故障排除

可以使用多個工具來解決 DLL 問題。以下是其中的部分工具。

Dependency Walker

Dependency Walker 工具可以遞歸掃描以尋找程序所使用的所有依賴 DLL。當您在 Dependency Walker 中打開程序時,Dependency Walker 會執行下列檢查:

·Dependency Walker 檢查是否丢失 DLL。

·Dependency Walker 檢查是否存在無效的程序文件或 DLL。

·Dependency Walker 檢查導入函數和導出函數是否匹配。

·Dependency Walker 檢查是否存在循環依賴性錯誤。

·Dependency Walker 檢查是否存在由于針對另一不同操作系統而無效的模塊。

通過使用 Dependency Walker,您可以記錄程序使用的所有 DLL。這可能有助于避免和更正将來可能發生的 DLL 問題。當您安裝 Microsoft Visual Studio 6.0 時,Dependency Walker 将位于以下目錄中:

driveProgram FilesMicrosoft Visual StudioCommonTools

DLL Universal Problem Solver

DLL Universal Problem Solver (DUPS) 工具用于審核、比較、記錄和顯示 DLL 信息。下表說明了組成 DUPS 工具的實用工具:

·Dlister.exe:該實用工具枚舉計算機中的所有 DLL,并且将此信息記錄到一個文本文件或數據庫文件中。

·Dcomp.exe:該實用工具比較在兩個文本文件中列出的 DLL,并産生包含差異的第三個文本文件。

·Dtxt2DB.exe:該實用工具将通過使用 Dlister.exe 實用工具和 Dcomp.exe 實用工具創建的文本文件加載到 dllHell數據庫中。

·DlgDtxt2DB.exe:該實用工具提供 Dtxt2DB.exe 實用工具的圖形用戶界面(GUI)版本。

DLL影響

文件修複

1、用Windows系統盤功能進行文件修複;

2、若在此之前有一鍵備份過,可以重新還原;

3、從網上下載系統文件然後複蓋到原文件夾裡;

上一篇:三角褲

下一篇:雙曲線

相關詞條

相關搜索

其它詞條