靜態庫和動態庫

2021-07-11 05:03:13 字數 422 閱讀 3625

靜態庫(.lib)中相當於存放了所有的源**, 包括他引入的其他靜態lib檔案.(其實是所有cpp編譯後對應的.obj檔案的打包)。所以靜態lib都比較大。

動態庫dll也有lib但是這個lib, 只是用來幫助程式在鏈結時定位dll中的函式的位址的。所以會在exe載入時才重定位函式的位址。重定位就是根據鏈結的這個lib的函式位址進行偏移計算後得到的。

另外在靜態庫的鏈結過程中,並不會把整個lib中的檔案都複製到鏈結他的(exe或者dll)中, 只會把引用到的函式對應的.obj或者函式(開啟函式級鏈結後)**複製到(exe或者dll)中。

動態庫(mt)有crt記憶體釋放問題, 因為每個可執行模組都會鏈結乙個自己的堆, 這樣在其他可執行模組中釋放該模組中的堆記憶體會有問題。

總之靜態庫比較省心, 現在也不差那點磁碟空間或者網路流量, 這種方式很好。而且不會有部署的麻煩。

庫(靜態庫和動態庫)

一 靜態庫 以c語言的形式生成庫 h中extern c int add int int extern c int sub int int 二.測試靜態庫 將.h和.lib放入 h ifdef cplusplus c 程式設計師用c的方式開啟 extern c int add int int exte...

靜態庫和動態庫

一。靜態庫 靜態庫的優點在於使用簡單,編譯快速。靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式。步奏 a。建立靜態庫 1 在編輯器中編輯其靜態庫函式 static lib.c 2 在shell中編譯該原始檔,生成乙個可重定位的目標...

靜態庫和動態庫

靜態庫 是在執行程式之前就已經加入到執行 中,成為執行程式的一部分來執行的,字尾名 a 動態庫 是在執行程式啟動時載入到執行 中,字尾名 so 靜態庫一開始就加入了執行 使得可執檔案比較臃腫,導致檔案比較大,占用記憶體較大使得它的編譯速度減慢,但是執行檔案時可以直接呼叫 所以執行效率較高 而動態庫只...