靜態鏈結庫和動態庫的引入庫lib檔案的區別

2021-06-29 16:54:06 字數 510 閱讀 6400

在vc程式設計中常常碰到的.lib檔案有乙個需要注意的地方是:

靜態庫——函式和資料被編譯進乙個二進位制檔案(副檔名問.lib)。在使用靜態庫的情況下,在編譯連線可執行檔案時,聯結器從庫中複製這些函式和資料並把他們和應用程式的其他模組組合起來建立最終的可執行檔案(.exe)檔案,當發布產品時,只需要發布這個可執行檔案,並不需要發布被使用的靜態庫。

動態庫——在使用動態庫時,往往提供兩個檔案:乙個引入庫(.lib)檔案和乙個dll(.dll)檔案。雖然引入庫的字尾名也是".lib",但是,動態庫的引入庫檔案和靜態庫檔案有著本質的區別。對乙個dll來說,器引入庫檔案(.lib)包含該dll匯出的函式和變數的符號名,而.dll檔案包含該dll實際的函式和資料,在使用動態庫的情況下,在編譯連線和執行檔案時,只需要在連線該dll的引入庫檔案,該dll中的函式**和資料並不複製到可執行檔案中,直到可執行程式執行時,才去載入所需要的dll,將該dll對映到程序的位址空間中,然後訪問dll中匯出的函式。這時,在發布產品時,除了發布可執行檔案以外,同時還要發布該程式將要呼叫的動態連線庫。

靜態鏈結庫和動態庫的引入庫檔案的區別

在vc程式設計中常常碰到的.lib檔案有乙個需要注意的地方是 靜態庫 函式和資料被編譯進乙個二進位制檔案 副檔名問.lib 在使用靜態庫的情況下,在編譯連線可執行檔案時,聯結器從庫中複製這些函式和資料並把他們和應用程式的其他模組組合起來建立最終的可執行檔案 exe 檔案,當發布產品時,只需要發布這個...

動態鏈結導入庫與靜態鏈結庫

目前以lib字尾的庫有兩種,一種為靜態鏈結庫 static libary,以下簡稱 靜態庫 另一種為動態連線庫 dll,以下簡稱 動態庫 的導入庫 import libary,以下簡稱 導入庫 靜態庫是乙個或者多個obj檔案的打包,所以有人乾脆把從obj檔案生成lib的過程稱為archive,即合併...

靜態鏈結庫和動態鏈結庫

其實再vc中,我們所用得所有api函式都封裝再下列三個dll檔案中 kernel32.dll 用於管理記憶體,程序和執行緒得各個函式 user32.dll 用於執行使用者介面任務,如視窗的建立和訊息的傳遞的各個函式 gdi32.dll 用於顯示文字和畫圖的各個函式 動態鏈結庫 我們再使用動態庫的時候...