1. 程式人生 > >DLL和EXE的區別

DLL和EXE的區別

動態連結庫(Dynamic Link Library,縮寫為DLL)
是一個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態連結庫檔案的副檔名一般是dll,也有可能是drv、sys和fon,它和可執行檔案(exe)非常類似.

區別
DLL中雖然包含了可執行程式碼卻不能單獨執行,而應由Windows應用程式直接或間接呼叫。
動態連結是相對於靜態連結而言的。所謂靜態連結是指把要呼叫的函式或者過程連結到可執行檔案中,成為可執行檔案的一部分。換句話說,函式和過程的程式碼就在程式的exe檔案中,該檔案包含了執行時所需的全部程式碼。當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個拷貝,這樣就浪費了寶貴的記憶體資源。
而動態連結所呼叫的函式程式碼並沒有被拷貝到應用程式的可執行檔案中去,而是僅僅在其中加入了所呼叫函式的描述資訊(往往是一些重定位資訊)。


僅當應用程式被裝入記憶體開始執行時,在Windows的管理下,才在應用程式與相應的DLL之間建立連結關係。當要執行所呼叫DLL中的函式時,根據連結產生的重定位資訊,Windows才轉去執行DLL中相應的函式程式碼