lib和dll的區別與聯絡

2021-07-11 17:30:02 字數 631 閱讀 8626

在用sql connector c++時,同時到了mysqlcppconn.lib和mysqlcppconn.dll兩個檔案,一時竟說不出它們的區別。。

(1)lib是編譯時用到的,dll是執行時用到的。如果要完成源**的編譯,只需要lib;如果要使動態鏈結的程式執行起來,只需要dll。

(2)如果有dll檔案,那麼lib一般是一些索引資訊,記錄了dll中函式的入口和位置,dll中是函式的具體內容;如果只有lib檔案,那麼這個lib檔案是靜態編譯出來的,索引和實現都在其中。使用靜態編譯的lib檔案,在執行程式時不需要再掛動態庫,缺點是導致應用程式比較大,而且失去了動態庫的靈活性,發布新版本時要發布新的應用程式才行。

(3)動態鏈結的情況下,有兩個檔案:乙個是lib檔案,乙個是dll檔案。lib包含被dll匯出的函式名稱和位置,dll包含實際的函式和資料,應用程式使用lib檔案鏈結到dll檔案。在應用程式的可執行檔案中,存放的不是被呼叫的函式**,而是dll中相應函式**的位址,從而節省了記憶體資源。dll和lib檔案必須隨應用程式一起發行,否則應用程式會產生錯誤。如果不想用lib檔案或者沒有lib檔案,可以用win32 api函式loadlibrary、getprocaddress裝載。

靜態鏈結的lib就沒有dll檔案,lib包含函式**本身,在編譯時直接將**加入程式當中

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