1樓:弒之觴
首先介紹一下靜態庫(靜態連結庫)、動態庫(動態連結庫)的概念,首先兩者都是**共享的方式。
靜態庫:在連結步驟中,聯結器將從庫檔案取得所需的**,複製到生成的可執行檔案中,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫**的一份完整拷貝;缺點就是被多次使用就會有多份冗餘拷貝。即靜態庫中的指令都全部被直接包含在最終生成的 exe 檔案中了。
在vs中新建生成靜態庫的工程,編譯生成成功後,只產生一個.lib檔案
動態庫:動態連結庫是一個包含可由多個程式同時使用的**和資料的庫,dll不是可執行檔案。動態連結提供了一種方法,使程序可以呼叫不屬於其可執行**的函式。
函式的可執行**位於一個 dll 中,該 dll 包含一個或多個已被編譯、連結並與使用它們的程序分開儲存的函式。在vs中新建生成動態庫的工程,編譯成功後,產生一個.lib檔案和一個.
dll檔案
那麼上述靜態庫和動態庫中的lib有什麼區別呢?
靜態庫中的lib:該lib包含函式**本身(即包括函式的索引,也包括實現),在編譯時直接將**加入程式當中
動態庫中的lib:該lib包含了函式所在的dll檔案和檔案中函式位置的資訊(索引),函式實現**由執行時載入在程序空間中的dll提供
總之,lib是編譯時用到的,dll是執行時用到的。如果要完成源**的編譯,只需要lib;如果要使動態連結的程式執行起來,只需要dll。
2樓:匿名使用者
靜態庫lib,動態庫dll
關於c中lib和dll的區別
3樓:匿名使用者
.h用於編譯階段的稽核,如在math.h中有函式宣告:
int abs(int);
但是在使用中寫為
#include
...abs(3,5);
編譯器階段就會檢測出錯誤。
.dll用於執行階段,如呼叫setwindowtext()函式等,需要在user32.dll中找到該函式。dll可以簡單認為是一種包含供別人呼叫的函式和資源的可執行檔案。
.lib用於連結階段,在連結各部分目標檔案(通常為.obj)到可執行檔案(通常為.
exe)過程中,需要在.lib檔案中查詢動態呼叫函式(一般為dll中的函式)的地址資訊,此時需要在lib檔案中查詢,如查詢setwindowtext()函式的地址偏移就需要查詢user32.lib檔案。
(.lib也可用於靜態連結的內嵌**)
windows中lib和dll的區別與使用
c++ 呼叫lib 和 dll的 方法 及 動態庫dll與靜態庫lib的區別
c++中**件和lib有什麼區別
4樓:匿名使用者
h是編寫程式所需要的標頭檔案,而lib是程式執行時需要的庫檔案,如果有些庫檔案不裝載是不能執行的!
5樓:匿名使用者
h是標頭檔案, 純文字, 標頭檔案中不是定義函式, 是宣告lib是編譯好的二進位制機器碼, 連結用
包含lib檔案, 要看是什麼連結器, 如果gcc, 首先路徑要包含, 然後加-l引數
比如abc.dll, 那就是gcc -o target.exe "source.o" -labc
c++中lib檔案如何在c#中呼叫?
6樓:匿名使用者
用lib檔案生成dll檔案,還要保證函式是匯出函式;
內在函式前加容上 extern "c" _declspec(dllexport)即可呼叫;
lib有兩種,一種是靜態庫,比如c-runtime庫,這種lib中有函式的實現**,一般用在靜態連編上,它是將lib中的**加入目標模組(exe或者dll)檔案中,所以連結好了之後,lib檔案就沒有用了。
7樓:匿名使用者
lib檔案要保證是靜態lib
即你建立工程的時候選的是win32 static library(靜態連結庫)
我不明白你為什麼不直接建立一個動態連結庫(dll)這樣呼叫就直接多了
難道你沒有源**?
Python中列表生成式和生成器的區別
列表生成式語法 x x for x in range 0,10 列表生成式,這裡是中括號 結果 0,1,4,9,16,25,36,49,64,81 x x for x in range 0,10 生成器,這裡是小括號 結果 at 0x7f0b072e6140 二者的區別很明顯 一個直接返回了表示式的...
c中new和override的區別
如果你用override,則無論呼叫的是a類還是b類中的test 系統都會找到它實質類的test 如果是用的new,則可以通過型別轉換呼叫到基類的test 下面是override的情況 a a new a b b new b a a1 new b a.test 呼叫a中test b.test 呼叫b...
概率和幾率的區別,概率中C和A的計算區別
率就是概率,兩者沒有區別。概率,亦稱 或然率 它是反映隨機事件出現的可能性大小。隨機事件是指在相同條件下,可能出現也可能不出現的事件。例如,從一批有 和次品的商品中,隨意抽取一件,抽得的是 就是一個隨機事件概率定義。概率一詞 於拉丁語 probabilitas 又可以解釋為 的意思是 正直 誠實 在...