複製鏈接
請複製以下鏈接發送給好友

lib文件

鎖定
.lib是一種文件名後綴,代表的是靜態數據連接庫,在windows操作系統中起到鏈接程序和函數(或子過程)的作用,相當於Linux中的.a或.o、.so文件。
中文名
lib文件
外文名
lib File
選    擇
通過vc自帶的depends查看dll接口
分    類
靜態與動態之分

lib文件意義

LIB文件中存放的是函數調用的信息,值得一提的是數據庫有靜態數據庫(.lib文件)和動態數據庫(.dll文件)。

lib文件靜態編譯

靜態編譯將導出聲明和實現都放在lib中。編譯後所有代碼都嵌入到宿主程序
靜態編譯的優點是編寫出來的程序不需要調用DLL和載入函數,直接可以當成程序的一部分來使用。
靜態編譯的缺點也是顯而易見的,使用靜態編譯的程序體積會比動態編譯大,原因是函數的實現被嵌入為程序代碼的一部分。

lib文件動態編譯

動態LIB文件相當於一個C語言中的h文件,是函數導出部分的聲明,而不將實現過程嵌入到程序本身中,編譯後只是將函數地址存在宿主程序中,運行到調用函數是調用DLL並載入函數來實現函數的具體操作。

lib文件詳細説明

LIB文件是不對外公開的,除非有專門的LIB查看工具,否則不能查看LIB文件中對函數的具體實現過程
有幾個選擇:
1、如果你查看有同名的dll文件,可以通過vc自帶的depends查看dll接口
2、通過msdn看你使用的該lib包含的函數名,來查找其對應的頭文件,頭文件裏面有整個lib的函數聲明(可能不全)
3、查看vc或者其他工具安裝目錄下的src目錄,查看函數的代碼
4、使用lib文件的方法:
1-在object/library modules使用全路徑名;
2-把*.lib放在VC的Lib目錄中
3-修改project setting的Link->Input中的Addtional library path,加入你的目錄。
LIB文件是庫文件(與DLL文件相類似),供其它程序調用的,直接打不開。
5、查看LIB和DLL文件都可以通過OLLYDBG中LOADDLL插件來反彙編查看各個函數的過程。

lib文件內容

一個lib文件是obj文件的集合。當然,其中還夾雜着其他一些輔助信息,目的是為了讓編譯器能夠準確找到對應的obj文件。我們可以通過tlib.exe(在tc2.0下的根目錄)來對lib文件進行操作,你可以把自己生成的obj文件通過tlib命令加入到一個lib文件中,也可以把lib文件內的obj文件進行刪除操作,還可以把內部的obj文件給提取出來。明白了lib文件的大致結構以及對它的具體操作,在學習C語言的過程中,就會又多了一個切入點對C語言具體實現進行研究。

lib文件與dll區別

(1)lib是編譯時需要的,dll是運行時需要的。
如果要完成源代碼的編譯,有lib就夠了。
如果要使動態連接的程序運行起來,有dll就夠了。
在開發和調試階段,當然最好都有。
(2)一般的動態庫程序有lib文件和dll文件。lib文件是必須在編譯期就連接到應用程序中的,而dll文件是運行期才會被調用的。如果有dll文件,那麼對應的lib文件一般是一些索引信息,具體的實現在dll文件中。如果只有lib文件,那麼這個lib文件是靜態編譯出來的,索引和實現都在其中。靜態編譯的lib文件有好處:給用户安裝時就不需要再掛動態庫了。但也有缺點,就是導致應用程序比較大,而且失去了動態庫的靈活性,在版本升級時,同時要發佈新的應用程序才行。
(3)在動態庫的情況下,有兩個文件,一個是引入庫(.LIB)文件,一個是DLL文件,引入庫文件包含被DLL導出的函數的名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到所需要使用的DLL文件,庫中的函數和數據並不複製到可執行文件中,因此在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中所要調用的函數的內存地址,這樣當一個或多個應用程序運行時再把程序代碼和被調用的函數代碼鏈接起來,從而節省了內存資源。從上面的説明可以看出,DLL文件必須隨應用程序一起發行,否則應用程序將會產生錯誤。

lib文件加載方法

lib文件直接加入

在VC中打開File View一頁,選中工程名,單擊鼠標右鍵,然後選中"Add Files to Project"菜單,在彈出的文件對話框中選中要加入DLL的LIB文件即可。

lib文件設置

打開工程的 Project Settings菜單,選中Link,然後在Object/library modules下的文本框中輸入DLL的LIB文件。

lib文件程序代碼

加入預編譯指令#pragma comment (lib,"*.lib"),這種方法優點是可以利用條件預編譯指令鏈接不同版本的LIB文件。因為,在Debug方式下,產生的LIB文件是Debug版本,如Regd.lib;在Release方式下,產生的LIB文件是Release版本,如Regr.lib。
當應用程序對DLL的LIB文件加載後,還需要把DLL對應的頭文件(*.h)包含到其中,在這個頭文件中給出了DLL中定義的函數原型,然後聲明。

lib文件生成工具

操作系統:Win7。
開發軟件:VS2010。

lib文件生成步驟

  1. 建立win32控制枱工程MyLib(或者win32項目中下的靜態庫),添加mySub.h文件以及mySub.cpp文件。
  2. 編寫mySub.h文件代碼,#ifndef _MYSUB_H。
  3. 編寫mySub.cpp文件代碼。
  4. 由於在工程中,沒有main()函數,所以編譯可能會出錯。這時,點擊工程,並選擇工程屬性,出現下圖,選擇靜態鏈接庫即可。
  5. 這時候再按快捷鍵 F7,build solution即可產生lib文件。在Debug中只生成.lib文件 [1] 

lib文件lib文件的使用

  1. 新建一個.cpp文件myLibTest.cpp(用於測試)。
  2. 點擊工程,並選擇工程屬性,將附加庫目錄新增包含剛才生成.lib的目錄。
  3. 將工程項目屬性中的配置類型改回至原來默認的應用程序(.exe),並執行myLibTest.cpp。
參考資料
  • 1.    王鐸. WebLib企業文件管理私有云安卓客户端的設計與實現[D]. 華南理工大學.