此處僅以VS2010為例,詳細說明一下如何在VS環(huán)境下生成和使用C++的靜態(tài)庫與動態(tài)庫。Qt下生成和使用靜態(tài)和動態(tài)庫后續(xù)再講。 本文僅供初學者參考,如果有問題歡迎大家指正。 首先簡單地理解一下靜態(tài)庫與動態(tài)庫,以及兩者的區(qū)別。 靜態(tài)庫(*.lib): 將*.cpp文件中的函數(shù)的地址和定義,以及函數(shù)之間的鏈接關(guān)系通通打包,生成的一個二進制文件; 動態(tài)庫(*.lib+*.dll): 動態(tài)庫的*.lib文件,打包的只是*.cpp文件中函數(shù)的地址和鏈接,函數(shù)的具體定義打包在*.dll文件中。 聯(lián)系: 1.二者都不包含函數(shù)的聲明部分,因此調(diào)用這兩種庫的時候,都需要包含相應(yīng)的頭文件(*.h); 2.靜態(tài)庫和動態(tài)庫的*.lib文件,在生成可執(zhí)行文件(*.exe)的時候,都將被打包進*.exe文件中; 區(qū)別: 1.靜態(tài)庫的*.lib文件遠大于動態(tài)庫的*.lib文件; 2.動態(tài)庫的*.dll文件作為可執(zhí)行文件*.exe的附加文件加入到程序中,一般放在*.exe的同級目錄下。
簡單地介紹完這兩種庫,下面來看看在VS下是怎么生成和使用的。
靜態(tài)庫: 生成: 1.新建一個空的Visual Studio 2010 ,Visual C++, Win32 控制臺工程,取名為“testlib”; (你可以在向?qū)е羞x擇靜態(tài)庫選項,也可以在后續(xù)的設(shè)置中設(shè)置生成靜態(tài)庫,這里我們在后面進行設(shè)置); 2.構(gòu)造一個類用于測試,這里叫做“CAdd”類,進行的是整數(shù)的加法運算,聲明和實現(xiàn)分別保存在文件“add.h”和 “add.cpp”中: “add.h”:
"add.cpp":
可以在“屬性”->"C++"->"預(yù)編譯頭"下選擇“不使用預(yù)編譯頭”去掉cpp文件的“stdafix.h”的添加要求
3. 選擇編譯為靜態(tài)庫: 在“屬性”->“配置屬性"->”常規(guī)“->”配置類型“下選擇”靜態(tài)庫(.lib)“(默認是"應(yīng)用程序(.exe)"),在此界面上可以更改輸出文件(.lib)所在的目錄, 以及l(fā)ib文件的名稱(默認是工程的名稱):
4.選擇生成解決方案,這時在你剛剛選擇的輸出文件夾下(這里是lib文件夾),已經(jīng)生成了靜態(tài)庫文件,add.lib
使用: 使用很簡單: 1.屬性-》配置屬性-》C/C++->常規(guī)-》附加包含目錄,填寫”add.h“所在目錄; 2.屬性-》配置屬性-》鏈接器-》附加依賴項,填寫”add.lib“; 3.屬性-》配置屬性-》鏈接器-》附件依賴目錄,填寫”add.lib“所在目錄; 4.在用到CAdd這個類的地方添加頭文件包含#include<add.h> 5.具體調(diào)用CAdd類的函數(shù)
下一篇將介紹如何在Visual Studio下生成和使用動態(tài)鏈接庫
|
|