1. 程式人生 > >原始檔,標頭檔案,靜態連結庫檔案,動態連結庫檔案的的理解

原始檔,標頭檔案,靜態連結庫檔案,動態連結庫檔案的的理解

如果你把一個.exe檔案只接放到沒有操作系充的“裸機”上去執行,顯然是執行不了的,可是你把這個程式放在一個裝有windows系統的電腦上就能運行了,顯然,程式的執行還是得依靠windows作業系統,這裡就要說到.dll檔案,上面說到的連結這一步時的程式碼複製只講到對程式作者自已寫的檔案和.lib檔案中用到的程式碼複製,並沒有提到.dll檔案中程式碼複製的情況,從.dll檔案的名字可以知道,這部分程式碼是“動態的連結”到執行著的程式的,比如說我們在檔案c中用到了.dll檔案中的函式,但是在連結完成後我們並沒有將這些函式的程式碼封到.exe檔案中去,可是這些函式又確確實實要用,這是怎麼實現的呢,這就是程式載入所要完成的工作,在連結器生成
.exe檔案後,連結程式把一個“表”放到了.exe檔案中,這個表就起錄了這個.exe檔案呼叫了哪些.dll中的哪些函式,這樣,載入過程中“載入器”就可以跟據這個表去把.dll檔案中程式用的那部分程式碼和.exe檔案中的程式碼一起載入到記憶體中去,這樣就形成了一個“完美的可執行程式”,這個程式駐留在記憶體中,程式段中的指令真接有CPU取出執行,再和作業系統合作完成程式要完成的各種功能。上面把連結形成的可執行程式碼叫“有缺陷的可執行檔案”到這裡可能就解釋清楚了,因為它沒有.dll檔案中的程式碼,所以不完全,為什麼程式要依賴windows我想除了windows會對資源管理外,這也是最重的原因之一,因為
windows提供了程式要完成執行必須的.dll檔案。