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

2021-08-10 12:08:35 字數 1019 閱讀 9474

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,然後注入到系統程序中去,讓作業系統來幫我達到目的。