A. windows中LIB和DLL的區別與使用
關於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裝載。
B. windows使用thrift c++ 需要編譯lib嗎
1.從boost pro下載安裝boost庫,包括源文件和lib庫。
2.從libevent官網下載libevent庫,只有源文件。
3.從thrift官網,使用svn方式下載thrift庫,只有源文件。(千萬別用壓縮包版本的Release發布包,裡面的路徑都不對)
4.在thrift庫的cpp文件夾里,有libthrift和libthriftnb兩個工程,這兩個工程都可以直接使用VS2010打開。
其中,libthrift需要鏈接boost的源文件,引用boost lib庫。
而libthriftnb不僅僅需要boost的源文件和boost lib庫,還需要引用libevent源文件。
然後就可以編譯libthrift和libthriftnb兩個工程。
5.在thrift的svn的tutorial目錄下,用thrift-0.8.0.exe編譯tutorial.thrift和shared.thrift,會得到一堆cpp和h文件。這時,新建一個C++ Console空工程,把這些文件都引入。
期間還需要做一些小修正:
5.1 刪除thrift文件里的D語言(因為沒有這語言的編譯器)
5.2 刪除shared的skeleton.cpp(防止與Calculator的skeleton.cpp的main沖突)
5.3 為CalculatorHandler類增加一個getStruct函數實現(防止VS2010報錯說不能實例化虛類,getStruct方法的內容為空,返回值和參數,直接復制SharedServiceIf.h里的)
C. 有的程序為何只有dll沒有lib
首先,dll的調用不一定需要*.lib這個引入庫。
dll調用分為兩種方式,一是隱式鏈接,二是顯式鏈接。隱式鏈接就是使用*.lib的,這就需要在編譯的時候有這個lib文件。而顯式鏈接,就是使用LoadLibrary這個API函數來實現動態載入,因此,不需要lib這樣的引入庫。
再者,就算是使用隱式鏈接,lib只是在編譯的時候確定DLL介面,使得調用者可以很便捷地使用dll文件,但在發布的時候,是不需要連同lib一起發布。
如果你要發布一個dll形式的SDK,就很有必要將頭文件,dll文件連同引入庫一起發布,以方便使用者調用。
D. lib文件用什麼軟體打開 後綴名lib是什麼格式文件
lib文件是什麼?lib文件格式介紹如下:LIB有兩種,一種是靜態庫,靜態庫,一般在編程序的軟體里才帶有的庫文件。另一種當然是動態庫了,這種庫文件,是主要供其它程序調用的,直接打不開。需要藉助VB、PB等軟體才能打開,或者用編程語言來打開,當然VC自帶的mpbin或者直接任意商業的反匯編工具如IDA,w32dasm也是可以的。lib格式圖標如下:lib文件是什麼以及lib文件怎麼打開詳情如下: LIB 文件摘要LIB 文件與 三 種文件類型相關聯,可以使用 Unknown Developer 開發的 Unknown Software查看。 總的來說,這種格式與 三 種已知的軟體應用程序相關聯。 它們通常以 Generic Data Library 文件格式存在。LIB 文件擴展名主要歸類於 Data Files 類別。 在不太常見的應用程序中,它們也可以是 Text Files。
Windows 和 Mac支持文件擴展名 LIB。 這些類型的文件主要可以在桌面設備上和某些移動設備上找到。普及性為「低」時,普通人通常不會使用這些文件。
要了解有關 LIB 文件及其相關軟體應用程序的更多信息,請參閱以下信息。 另外,我們提供了一個基本的故障排除指南,以解決打開 LIB 文件的問題。
LIB 文件的種類3 種已知文件類型使用此擴展名Generic Data Library Finale Library Microsoft Linker Input Library Data 主導 LIB 文件類型 .LIB文件 ID:.lib 組:Generic Data Library所述 LIB 文件擴展名是使用各種方案,作為包含由程序引用的常量和函數的信息庫中的數據文件類型。它也可能包含圖像,文本剪報,那是不應該手動,因為它由應用程序本身所引用打開其他實際的對象。
開發商:Various Developers文件類別:數據文件注冊表項: HKEY_CLASSES_ROOT.lib打開 Generic Data Library的軟體程序:
Unknown Developer 開發的 Unknown Software (軟體環境: Windows)替代 LIB 類型 .LIB文件 ID:.lib 組:Finale Library的LIB的文件擴展名是與壓軸軟體,這是在生產的樂譜的使用的程序相關聯的數據文件類型。一些音樂符號數據被包括在LIB文件類型如;文檔設置,文本表述,設置和弦或關節。
開發商:MakeMusic, Inc.文件類別:數據文件打開 Finale Library 文件的軟體程序:
MakeMusic, Inc. 開發的 Finale
兼容:(軟體環境: Windows) (軟體環境: Mac).LIB文件 ID:.lib 組:Microsoft Linker Input Library Data的LIB的文件擴展名是用於通過鏈接器輸入文件中的一個的源代碼和腳本文件類型。 Link支持COFF標准庫以及COFF導入庫。雙方都有LIB文件擴展名。 LIB工具創建包含在鏈接器輸入庫中的對象。鏈接導入庫的內容包括有關信息
開發商:Microsoft Corporation文件類別:文本文件打開 Microsoft Linker Input Library Data 文件的軟體程序:
Microsoft Corporation 開發的 Microsoft Visual Studio
兼容:(軟體環境: Windows)LIB 疑難解答 典型的 LIB 開放挑戰 缺少 Unknown Software 嘗試打開 LIB 文件時,您收到錯誤 「無法打開 LIB 文件類型」。 發生這種情況時,通常是由於 %%os%% 中缺少 Unknown Software。 您的操作系統無法將 LIB 與 Unknown Software 關聯,因此雙擊該文件將無法正常工作。
提示:如果你知道有其他軟體打開 LIB 文件,你可以通過點擊 「顯示應用程序」 按鈕來選擇該軟體。
Unknown Software 的過時版本 在某些情況下,您可能有 Generic Data Library 文件的較新(或較舊)版本,該版本 不受安裝的應用程序版本的支持 。 訪問 Unknown Developer 網站下載(或購買)最新版本的 Unknown Software。 此問題主要發生在您的 Generic Data Library 文件是由比電腦上的更新版本的 Unknown Software 創建的時候。
提 示: 右鍵單擊 LIB,然後單擊 「屬性」(Windows)或 「獲取信息」(Mac),可以提供有關文件版本的線索。
摘要:計算機上沒有正確的 Unknown Software 版本可能會導致打開 LIB 文件時出現問題。
難以打開 LIB 文件的其他原因 盡管您的計算機上可能已經安裝了 Unknown Software 或其他 LIB 相關軟體,但是打開 Generic Data Library 文件時仍可能遇到問題。 其他 LIB 打開錯誤可能是由 %%os%% 中的其他系統問題造成的。 其他因素包括:
LIB 文件類型注冊表項錯誤 錯誤地從注冊處刪除了 LIB 文件說明 Unknown Software 或其他 LIB 相關程序的安裝損壞 LIB 本身已損壞 過去或現在的病毒感染影響了你的 LIB LIB 相關硬體的設備驅動程序已過期 您的 計算機沒有足夠的系統資源 來打開 Generic Data Library 格式lib文件是什麼以及lib文件怎麼打開擴展閱讀.LIB 文件擴展名2種文件類型 使用.LIB文件擴展名1.靜態數據連接庫2.通用資料庫文件類型 1靜態數據連接庫開發者N/A常用度十分少用格式文件後綴.lib文件分類系統文件LIB是什麼文件? LIB文件是Windows操作系統的靜態數據連接庫,起到鏈接程序和函數(或子過程)的作用,相當於Linux系統中的.A或.0、.SO文件。LIB文件存放著函數調用的信息。
LIB文件擴展信息資料庫有靜態資料庫(LIB文件)和動態資料庫(DLL文件)。LIB是編譯時用到的,DLL是運行時用到的。如果要完成源代碼的編譯,只需要LIB;如果要使動態鏈接的程序運行起來,只需要DLL。
一個LIB文件是.OBJ文件的集合。當然,其中還夾雜著其他一些輔助信息,目的是為了讓編譯器能夠准確找到對應的OBJ文件。
LIB文件是不對外公開的,除非有專門的LIB查看工具,否則不能查看LIB文件中對函數的具體實現過程。
LIB文件怎麼打開?如果你電腦上打不開LIB文件,原因可能有很多,而最常見最主要的原因就是你的電腦沒有安裝可以打開LIB文件的軟體;Windows系統會彈出提示框:「若要打開此文件,Windows需要知道哪個程序打開它」,最簡單直接的解決辦法就是下載並安裝合適的軟體來打開LIB文件。
可以打開LIB文件的軟體程序
E. 在TC中,怎樣用命令編譯lib庫
定義函數庫的方法及應用:
一、2個相關的命令
1、TCC——TC的DOS下的命令行編譯連接工具
2、TLIB——TC的DOS下的庫操作工具
二、1個自定義的函數庫的例子
1、
在TC集成環境下,編一個文件USERADD.C
#define
_NO_MAIN
int
add(int
*a,int
*b)
{
int
c;
c=(*a)+(*b);
return
c;
}
按ALT—F9編譯
生成一個
USERADD.OBJ文件。
2、按F10—F—O
退到DOSSHELL(DOS環境下)
COPY
USERADD.OBJ
到
..\LIB目錄,在\LIB目錄下執行
TLIB
USERLIB.LIB+USERADD.OBJ
就生成了一個自己的函數庫
USERLIB,在這個函數庫里就包含了函數模塊
int
add(int
*a,int
*b)
的二進制代碼。現在已經將自定義的函數放進了函數庫,就可以把原文件USERADD.C刪掉不要了。(當然,為了以後維護方便,還是作一個備份為好)。
以後如有其它的函數模塊,也可以編譯後用TLIB
命令加入到這個函數庫里。
3、寫一個包含文件
USER1.H,寫完後COPY到INCLUDE
目錄。內容如下:
int
add(int
*,int
*);
4、作好了以上的自定義函數庫的准備工作,現在就可以使用了。
寫一個程序,取名為ADD-1.C,在程序中調用庫函數add(
);
#include
#include
void
main(
)
{
int
a,b,c;
a=20;b=30;
c=add(&a,&b);
printf(「%d」,c);
}
5、在DOS命令行下,執行
TCC
ADD-1.C
..\LIB\USERLIB.LIB
就OK!
運行ADD-1.EXE,可以看到輸出結果
50
Tc生成lib的方法:
擴展庫與自建LIB庫使用擴展庫TC所帶的庫在有的情況下是無法滿足功能要求的,自己寫一個太麻煩,找到了一個LIB庫又怕不會用。在WIN-TC中,對於使用外部的擴展庫(第三方LIB)提供了一個方便的解決方法:首先要確定你的LIB庫是FOR
TC版本的而不是FOR
VC或是其它的。如果確定是FOR
TC的版本的話就把你的首標文件(或稱頭文件),就是擴展名為*.h的文件拷貝到WIN-TC的include目錄里,然後把相應名稱的*.lib文件拷貝到lib目錄,然後再運行WIN-TC時選擇「編譯配置」菜單項,你會看到擴展庫信息欄目里有你的LIB庫文件名在上面了,但是沒有打鉤。然後你把它鉤選後再「確定」保存,以後的編譯程序時就自動鏈接該擴展庫了。自建立LIB庫將自己的代碼編譯成LIB庫的格式有利與保護自己的代碼版權。如何來生成自己的LIB庫呢?請按照下面的方法:
STEP
1——生成目標代碼(OBJ)
建立mylib的代碼文件/*********************
mylib.c
*********************/void
myfun(){printf("
myfun()
in
mylib.lib
");}然後保存為WIN-TC目錄下的mylib.c文件然後到菜單項:運行->編譯設置
看看「產生
OBJ
文件」是否已選擇,若未選擇則選擇之。然後回到主界面,點「編譯鏈接」按鈕(F9
查看原帖>>
F. lib文件是什麼是不是編譯自動生成我不加lib文件運行不了
lib文件是靜態庫,這種文件中有頭文件中聲明的函數的實現代碼,一般用在靜態連編上,編譯鏈接時,將lib文件與其他模塊編譯生成的目標代碼鏈接,從而形成能夠運行的可執行文件。
#pragma comment(lib, "pcc32_vc6.lib")就是連入一個庫文件,表示鏈接pcc32_vc6.lib這個靜態庫文件來生成可執行文件。