程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> .lib文件 .h文件 .dll文件,

.lib文件 .h文件 .dll文件,

編輯:C++入門知識

.lib文件 .h文件 .dll文件,


.lib代表的是靜態數據連接庫,在windows系統中起到鏈接程序和函數的作用,存放的是函數的是函數調用的信息,是obj文件的集合。相當於linux中的.a或.0、 .so文件。lib文件是不對外公開的,不能查看編譯過後的文件。

lib有靜態lib和動態lib之分。

 靜態lib將導出聲明和實現都放在lib中,即包含函數代碼本身,編譯後所有代碼都嵌入到宿主程序.
動態lib相當於一個h文件,是對實現部分(.dll文件)的導出部分的聲明。編譯後只是將導出聲明部分編譯到宿主程序中,運行時候需要相應的dll文件支持.

靜態庫(lib)的調用需要頭文件(#include ".h")和添加庫文件(.lib),添加庫文件可以利用開發環境添加

   vc項目文件中,lib一般放庫文件,也就是後綴.lib的,include 一般包含頭文件目錄
   bin表示binary目錄,一般都是dll,exe等。

 

h文件是用來編寫函數(類,變量類型)原型聲明的,通常dll、lib和obj的使用需要有h文件的配合,以獲得二進制代碼的原型聲明


關於lib和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裝載。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved