首先介紹下靜態庫(靜態鏈結庫,.lib檔案),動態庫*(動態鏈結庫,.dll檔案)的概念,首先兩者都是**共享的方式.
靜態庫:在鏈結步驟中,聯結器將從庫檔案取得所需的**,複製到生成的可執行檔案,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫**的乙份完整拷貝;缺點就是被多次使用就會有多份冗餘拷貝.即靜態庫中的指令都全部被直接包含在最終生成的exe檔案中了.
在vs中新建生成靜態庫的工程,編譯生成成功後,只產生乙個.lib檔案
動態庫:動態鏈結庫是乙個包含可由多個程式同時使用的**和資料的庫,dll不是可執行檔案。動態鏈結庫提供了一種方法,使程序可以呼叫不屬於其可執行**的函式,函式的可執行**位於乙個dll中,該dll包含乙個或多個已被編譯,鏈結並 與使用他們的程序分開儲存的函式。
vs中生成動態庫的工程,編譯成功後,產生乙個.lib檔案和乙個.dll檔案
那麼上述靜態庫和動態庫中的lib有什麼區別呢?
靜態庫中的lib:該lib包含函式**本身(即包括函式的索引,也包括實現),在編譯時直接將**加入程式當中
動態庫中的lib:該lib包含了函式所在的dll檔案和檔案中函式位置的資訊(索引),函式實現**由執行時載入在程序空間中的dll提供
總之,lib是編譯時用到的,dll是執行時用到的。如果要完成源**的編譯,只需要lib;如果要使動態鏈結的程式執行起來,只需要dll。
執行環境vs2010
dll建立:開啟vs,檔案-新建專案-選擇「類庫」,建立完成後,編譯專案生成dll
.lib建立:.net中沒有lib檔案,只能呼叫.dll,想呼叫.lib,只能將lib檔案轉到c++專案生成dll再呼叫.
lib和dll的區別 生成以及使用詳解
目錄 lib dll介紹 生成動態庫 呼叫動態庫 生成靜態庫 呼叫靜態庫 首先介紹一下靜態庫 靜態鏈結庫 動態庫 動態鏈結庫 的概念,首先兩者都是 共享的方式。靜態庫 在連線步驟中,聯結器將從庫檔案取得所需的 複製到生成的可執行檔案中,這種苦稱為靜態庫,其特點是可執行檔案中包含了庫 的乙份完整拷貝 ...
lib 和 dll 的區別 生成以及使用詳解
首先介紹一下靜態庫 靜態鏈結庫 動態庫 動態鏈結庫 的概念,首先兩者都是 共享的方式。靜態庫 在鏈結步驟中,聯結器將從庫檔案取得所需的 複製到生成的可執行檔案中,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫 的乙份完整拷貝 缺點就是被多次使用就會有多份冗餘拷貝。即靜態庫中的指令都全部被直接包含在最...
lib 和 dll 的區別 生成以及使用詳解
lib 和 dll 的區別 生成以及使用詳解 目錄 lib dll介紹 生成動態庫 呼叫動態庫 生成靜態庫 呼叫靜態庫 首先介紹一下靜態庫 靜態鏈結庫 動態庫 動態鏈結庫 的概念,首先兩者都是 共享的方式。靜態庫 在鏈結步驟中,聯結器將從庫檔案取得所需的 複製到生成的可執行檔案中,這種庫稱為靜態庫,...