動態連結庫與可執行檔案的本質區別

時間 2021-08-11 18:04:16

1樓:文交天下友

本質區別在於動態連結庫本身是不能被執行的,必須要被可執行檔案呼叫才能實現功能。

動態連結庫(dynamic link library 或者 dynamic-link library,縮寫為 dll),是微軟公司在微軟windows作業系統中,實現共享函式庫概念的一種方式。這些庫函式的副檔名是 」.dll"、".

ocx"(包含activex控制的庫)或者 ".drv"(舊式的系統驅動程式)。

動態連結提供了一種方法,使程序可以呼叫不屬於其可執行**的函式。函式的可執行**位於一個 dll 檔案中,該 dll 包含一個或多個已被編譯、連結並與使用它們的程序分開儲存的函式。dll 還有助於共享資料和資源。

多個應用程式可同時訪問記憶體中單個 dll 副本的內容。

使用動態連結庫可以更為容易地將更新應用於各個模組,而不會影響該程式的其他部分。例如,您有一個大型網路遊戲,如果把整個數百mb甚至數gb的遊戲的**都放在一個應用程式裡,日後的修改工作將會十分費時,而如果把不同功能的**分別放在數個動態連結庫中,您無需重新生成或安裝整個程式就可以應用更新。

可執行檔案 (executable file) 指的是可以由作業系統進行載入執行的檔案。在不同的作業系統環境下,可執行程式的呈現方式不一樣。

在windows作業系統下,可執行程式可以是 .exe檔案 .sys檔案 .com等型別檔案。

2樓:匿名使用者

你的理解幾乎99%都是正確的,但是要注意,dll至少有一個或多個入口點。它本身沒有記憶體空間,但是它例項化的物件是佔用記憶體空間的。------------------有些功能必須寫dll?

這個不一定,這取決於需求。對於絕大多數程式來說,寫dll是為了更好的功能模組重用,而不是每次都去寫新的**。如果你瞭解一點物件導向的開發理念,就能理解這種重用的概念了,這叫做封裝。

當然,有些程式是必須通過dll來實現的,比如,我要達到某種見不得人的目的,但是不能建立新的程序,因為會被別人發現,所以我決定,把我寫的功能封裝成dll,然後注入到系統程序中去,讓作業系統來幫我達到目的。

什麼叫可執行檔案?一個可執行檔案是怎麼來的

可移植可執行。pe 檔案格式的檔案,它可以載入到記憶體中,並由作業系統載入程式執行。它可以是。exe或。dll檔案。在。net上下文中,pe 檔案必須由公共語言執行庫翻譯成本機 然後才能由作業系統執行。com bat也都是可執行檔案!簡單的說你雙擊能執行的可執行檔案是指計算機的作業系統能夠解釋並執行...

關於c程式可執行檔案的問題

你把程式寫好執行除錯沒有任何問題後 直接把你的程式下的 bin debug 下的所有檔案複製在一個資料夾下面。無論在什麼地方直接執行裡面的.exe 注意 一個是vs 模式的需要安裝vs可以刪除。另一個是可以直接執行的 這樣你就不需要安裝。把那個整個資料夾拷貝到那在那執行。當然需要相應的.netfra...

linux裡的可執行檔案,linux下用什麼命令來執行可執行檔案

linux的檔案一般沒有副檔名這一說法。linux的檔案只分為文字檔案,可執行檔案,還有幾種特殊檔案。可執行檔案只需設定可執行標記就可以了,而且可執行檔案一般都是沒有副檔名的。比如linux裡的emacs,vi,gedit,firefox,gcc,gdb都是沒有副檔名的,檔名就是這樣的。文字檔案,圖...