lib和dll檔案的區別和聯絡

2021-07-15 02:35:54 字數 2087 閱讀 4077

(1)lib是編譯時需要的,dll是執行時需要的。

如果要完成源**的編譯,有lib就夠了。

如果也使動態連線的程式執行起來,有dll就夠了。

在開發和除錯階段,當然最好都有。

(2)一般的動態庫程式有lib檔案和dll檔案。lib檔案是必須在編譯期就連線到應用程式中的,而dll檔案是執行期才會被呼叫的。如果有dll檔案,那麼對應的lib檔案一般是一些索引資訊,具體的實現在dll檔案中。如果只有lib檔案,那麼這個lib檔案是靜態編譯出來的,索引和實現都在其中。靜態編譯的lib檔案有好處:給使用者安裝時就不需要再掛動態庫了。但也有缺點,就是導致應用程式比較大,而且失去了動態庫的靈活性,在版本公升級時,同時要發布新的應用程式才行。

(3)在動態庫的情況下,有兩個檔案,乙個是引入庫(.lib)檔案,乙個是dll檔案,引入庫檔案包含被dll匯出的函式的名稱和位置,dll包含實際的函式和資料,應用程式使用lib檔案鏈結到所需要使用的dll檔案,庫中的函式和資料並不複製到可執行檔案中,因此在應用程式的可執行檔案中,存放的不是被呼叫的函式**,而是dll中所要呼叫的函式的記憶體位址,這樣當乙個或多個應用程式執行是再把程式**和被呼叫的函式**鏈結起來,從而節省了記憶體資源。從上面的說明可以看出,dll和.lib檔案必須隨應用程式一起發行,否則應用程式將會產生錯誤。

一、開發和使用dll需注意三種檔案

1、 dll標頭檔案

它是指dll中說明輸出的類或符號原型或資料結構的.h檔案。當其它應用程式呼叫dll時,需要將該檔案包含入應用程式的原始檔中。

2、 dll的引入庫檔案

它是dll在編譯、鏈結成功後生成的檔案。主要作用是當其它應用程式呼叫dll時,需要將該檔案引入應用程式。否則,dll無法引入。

3、 dll檔案(.dll)

它是應用程式呼叫dll執行時,真正的可執行檔案。dll應用在編譯、鏈結成功後,.dll檔案即存在。開發成功後的應用程式在發布時,只需要有.exe檔案和.dll檔案,不必有.lib檔案和dll標頭檔案。

動態鏈結庫 (dll) 是作為共享函式庫的可執行檔案。動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執行**的函式。函式的可執行**位於乙個 dll 中,該 dll 包含乙個或多個已被編譯、鏈結並與使用它們的程序分開儲存的函式。dll 還有助於共享資料和資源。多個應用程式可同時訪問記憶體中單個 dll 副本的內容。

動態鏈結與靜態鏈結的不同之處在於:動態鏈結允許可執行模組(.dll 檔案或 .exe 檔案)僅包含在執行時定位 dll 函式的可執行**所需的資訊。在靜態鏈結中,鏈結器從靜態鏈結庫獲取所有被引用的函式,並將庫同**一起放到可執行檔案中。

在vc中不用mfc如何製作dll

dll.h

mylibapi int add(int ileft, int iright)

mylibapi int sub(int ileft, int iright)

dll.cpp

int add(int ileft, int iright)

int sub(int ileft, int iright)

儲存檔案。

在project-> setting-> link 最下面加上 「/dll」, 「/ 「之前一定要與前一項

有空格。

然後編譯,就可以在debug 或 release下面找到dll 和 lib 檔案了

使用的時候包含dll.h檔案

dll.h

int add(int ileft, int iright);

int sub(int ileft, int iright);

dll.cpp

int add(int ileft, int iright)

int sub(int ileft, int iright)

然後再當前目錄下面建立乙個.def檔案,檔名最好和要輸出的dll名字一樣,副檔名 為.def, 裡面寫上:

library dllname.dll

exports

add @1

add @2

然後將這個檔案新增到工程中,

在link中設定 /dll, 然後編譯

在debug或release中就可以找到dll和lib了

使用的時候加上dll.h檔案

lib和dll檔案的區別和聯絡

lib和dll lib和dll檔案的區別和聯絡 dll是在你的程式執行的時候才連線的檔案,因此它是一種比較小的可執行檔案格式,dll還有其他的檔案格式如.ocx等,所有的.dll檔案都是可執行。lib是在你的程式編譯連線的時候就連線的檔案,因此你必須告知編譯器連線的lib檔案在那裡。一般來說,與動態...

lib和dll檔案的區別和聯絡

lib和dll lib和dll檔案的區別和聯絡 dll是在你的程式執行的時候才連線的檔案,因此它是一種比較小的可執行檔案格式,dll還有其他的檔案格式如.ocx等,所有的.dll檔案都是可執行。lib是在你的程式編譯連線的時候就連線的檔案,因此你必須告知編譯器連線的lib檔案在那裡。一般來說,與動態...

lib和dll檔案的區別和聯絡

lib和dll檔案的區別和聯絡 2006 09 23 21 09 lib和dll lib和dll檔案的區別和聯絡 dll是在你的程式執行的時候才連線的檔案,因此它是一種比較小的可執行檔案格式,dll還有其他的檔案格式如.ocx等,所有的.dll檔案都是可執行。lib是在你的程式編譯連線的時候就連線的...