什麼是靜態連結庫?什麼是動態連結庫?他們有什麼區別

2022-03-08 21:27:52 字數 2143 閱讀 1015

1樓:生活爵士

一、動態連結庫的概念

動態連結庫(dynamic link library,縮寫為dll)是一個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態連結庫檔案的副檔名一般是dll,也有可能是drv、sys和fon,它和可執行檔案(exe)非常類似,區別在於dll中雖然包含了可執行**卻不能單獨執行,而應由windows應用程式直接或間接呼叫。

動態連結是相對於靜態連結而言的。所謂靜態連結是指把要呼叫的函式或者過程連結到可執行檔案中,成為可執行檔案的一部分。換句話說,函式和過程的**就在程式的exe檔案中,該檔案包含了執行時所需的全部**。

當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個拷貝,這樣就浪費了寶貴的記憶體資源。而動態連結所呼叫的函式**並沒有被拷貝到應用程式的可執行檔案中去,而是僅僅在其中加入了所呼叫函式的描述資訊(往往是一些重定位資訊)。僅當應用程式被裝入記憶體開始執行時,在windows的管理下,才在應用程式與相應的dll之間建立連結關係。

當要執行所呼叫dll中的函式時,根據連結產生的重定位資訊,windows才轉去執行dll中相應的函式**。

一般情況下,如果一個應用程式使用了動態連結庫,win32系統保證記憶體中只有dll的一份複製品,這是通過記憶體對映檔案實現的。dll首先被調入win32系統的全域性堆疊,然後對映到呼叫這個dll的程序地址空間。在win32系統中,每個程序擁有自己的32位線性地址空間,如果一個dll被多個程序呼叫,每個程序都會收到該dll的一份映像。

2樓:淋漓盡致的

靜態庫可以認為是一些目標**的集合。按照習慣,一般以".a"做為檔案字尾名。

使用ar(archiver)命令可以建立靜態庫。因為共享庫有著更大的優勢,靜態庫已經不被經常使用。但靜態庫使用簡單,仍有使用的餘地,並會一直存在。

靜態庫在應用程式生成時,可以不必再編譯,節省再編譯時間。但在編譯器越來越快的今天,這一點似乎已不重要。如果其他開發人員要使用你的**,而你又不想給其原始碼,提供靜態庫是一種選擇。

從理論上講,應用程式使用了靜態庫,要比使用動態載入庫速度快1-5%,但由於莫名的原因,實際上可能並非如此。由此看來,除了使用方便外,靜態庫可能並非一種好的選擇。

共享庫共享庫是在程式啟動時被裝載。當一個應用程式裝載了一個共享庫後,其它應用程式仍可以裝載同一個共享庫。基於linux的使用方法,共享庫還有其它靈活的而又精妙的特性:

更新庫並不影響應用程式使用舊的,非向後相容的版本;在執行特定程式時,可以覆蓋整個庫或更新庫中的特定函式;以上操作不會影響已經執行的程式,他們仍會使用已經裝載的庫。

什麼是靜態連結庫,什麼是動態連結庫 及區別

3樓:生活爵士

一、動態連結庫的概念

動態連結庫(dynamic link library,縮寫為dll)是一個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態連結庫檔案的副檔名一般是dll,也有可能是drv、sys和fon,它和可執行檔案(exe)非常類似,區別在於dll中雖然包含了可執行**卻不能單獨執行,而應由windows應用程式直接或間接呼叫。

動態連結是相對於靜態連結而言的。所謂靜態連結是指把要呼叫的函式或者過程連結到可執行檔案中,成為可執行檔案的一部分。換句話說,函式和過程的**就在程式的exe檔案中,該檔案包含了執行時所需的全部**。

當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個拷貝,這樣就浪費了寶貴的記憶體資源。而動態連結所呼叫的函式**並沒有被拷貝到應用程式的可執行檔案中去,而是僅僅在其中加入了所呼叫函式的描述資訊(往往是一些重定位資訊)。僅當應用程式被裝入記憶體開始執行時,在windows的管理下,才在應用程式與相應的dll之間建立連結關係。

當要執行所呼叫dll中的函式時,根據連結產生的重定位資訊,windows才轉去執行dll中相應的函式**。

一般情況下,如果一個應用程式使用了動態連結庫,win32系統保證記憶體中只有dll的一份複製品,這是通過記憶體對映檔案實現的。dll首先被調入win32系統的全域性堆疊,然後對映到呼叫這個dll的程序地址空間。在win32系統中,每個程序擁有自己的32位線性地址空間,如果一個dll被多個程序呼叫,每個程序都會收到該dll的一份映像。

4樓:左鄰右舍海蜇

庫,什麼jsftydu

動態連結庫,靜態連結庫和可執行檔案的區別是什麼?

常用動態連結庫的dll有哪些,常用動態連結庫的DLL有哪些?

哥們,你好歹給個範圍,windows裡的dll一堆堆,很多程式,軟體都有自己的dll,我自己寫個軟體也可以生成很多dll,哪些是你認為常用的 動態連結庫 dll,即 dynamic link library 是可執行的模組,但它沒有自己的堆疊,必須在呼叫動態連結庫函式的程式 環境下執行。動態連結庫不...

大家好,小弟我想知道「動態連結庫」是什麼軟體或是什麼程式做成的

就是dll dll 是一個包含可由多個程式同時使用的 和資料的庫。例如,在 windows 作業系統中,comdlg32 dll 執行與對話方塊有關的常見函式。因此,每個程式都可以使用該 dll 中包含的功能來實現 開啟 對話方塊。這有助於促進 重用和記憶體的有效使用。通過使用 dll,程式可以實現...

什麼是靜態網頁,什麼叫動態頁面和靜態頁面?

靜態網頁,動態網頁主要根據網頁製作的語言來區分 靜態網頁使用語言 html 超文字標記語言 動態網頁使用語言 html asp 或 html php 或 html jsp 等。就是不能進行好的互動,即html 什麼叫動態頁面和靜態頁面?1 動態網頁,是指跟靜態網頁相對的一種網頁程式設計技術。靜態網頁...