早就據說過這個Boost庫的牛B,只是一直沒有精力來學習,最近在網上查了查,評論有好有壞,但多一點是好的,不過暫時沒有見過有公司使用Boost庫來做爲公司產品開發的,網上也有說Boost庫值得用來學習和研究,可是在作應用方面,考慮到維護什麼的,不太適合。的確也是,做爲公司產品開發的技術,有時候要考慮到不少東西,不過說功能強就一會兒拿來用,之後,技術人員的變更,升級什麼的,若是給公司帶來更多的麻煩,倒還不如使用人人都懂的MFC,只要能把應用作到位,多餘的強功能,不用也罷。。。html
好了,開始學習。。。ios
1、下載和安裝。正則表達式
1.到官網下載個最新的包,我下載的是boost_1_37_0.rarbootstrap
2.新建一個目錄,如:在:d:\Boost,把boost_1_37_0.rar解壓到裏面,如d:\Boost\boost_1_37_0工具
3.網上的資料說,解壓後,絕大多數的類庫就可使用了,由於裏面已經有.h和.cpp的完整源碼,因此直接包含在你的工程也是可編譯過去的。使用方式:個人機子裝了VC 6.0和VS.net 2008,我使用VC 6.0測試了一下,Pass.post
方法:在VC->Tools->Options->Directories->Include files裏面增長D:\Boost\boost_1_37_0就OK了。學習
給個例子以下:測試
#include <vector>
#include <iostream>
#include <boost/lexical_cast.hpp>ui
using namespace boost ;
using namespace std ;spa
int main(int argc, char * argv[])
{
vector<int> v1;
vector<int>::const_iterator ci_v1 ;
int iLength = 0 ;
while( iLength < 10 )
{
try
{
if ( iLength == 5 )
v1.push_back(lexical_cast<int>("DukeJoe")) ;
else
v1.push_back(lexical_cast<int>(iLength));
}
catch(bad_lexical_cast &ex)
{
cout << ex.what()<< endl ;
v1.push_back(-1);
}
iLength++ ;
}
cout << "vector --> " ;
for ( ci_v1 = v1.begin() ; ci_v1 != v1.end() ; ci_v1++ )
{
cout << *ci_v1 << " " ;
}
cout << endl ;
return 0 ;
}
這時候VC 6.0就能夠編譯過去,可使用Boost一些類庫功能了。。。
4.上面的使用方式是,等你的工程須要的時候,纔將Boost一些庫功能進行編譯。可是咱們如今也能夠先將Boost類的功能編譯成.dll和.lib,這樣的話,等到咱們的工程使用的時候,只須要.dll,.lib,還有相應的.h就能夠了,這樣咱們工程的編譯時間也少一點。
通常Boost庫是由多個子庫功能組合起來的,我能夠一會兒所有編譯全部的子庫,也可只編譯某一些子庫,如regex功能子庫。什麼是子庫?D:\Boost\boost_1_37_0\libs下面有多個文件夾,一個文件夾就是一個子庫。
如今咱們先介紹怎麼編譯某個子庫:以regex爲例
個人機子上面裝了VC.net 2008和VC 6.0,由於C++的東西,不少公司仍是使用VC 6.0來開發,不多使用VC.net版本,因此決定使用VC 6.0來編譯Boost庫,而後也在VC 6.0裏面使用Boost庫,而不使用.net版本的東西,可是到了.net 版本的VC.net也是可使用Boost庫的,其安裝和使用過程相似,下面有提示一下的。
方法一:
打開cmd,定位到D:\Boost\boost_1_37_0\libs\regex\build,先打上"D:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT",命令也使用雙引號括上,這個VCVARS32.BAT,東東厲害了,VC 6.0不像它的哥們VC.net安裝完後,會在環境變量上面加上必要的東西,這個VCVARS32.BAT就是一個加上必要的環境變量的批處理,若是你的VC 6.0安裝在C盤,就改D爲C,跟着,打上命令"nmake /f vc6.mak",就開始編譯了,這裏的nmake調用的是VC 6.0的,不是VC.net的nmake,vc6.mak是make文件,若是你想使用VC.net版原本編譯,如我使用的是VC.net 2008,因此使用vc9.mak,可是你得使用"Visual Studio 2008 命令提示"的cmd,而不是通常的cmd,進去以後,編譯命令改成"nmake /f vc9.mak",就OK了,對於VC.net版本,它也有一個VCVARS32.BAT,大概路徑爲D:\Program Files\Microsoft Visual Studio 9.0\VC\bin\VCVARS32.BAT,也是一個配置環境變量的批處理,在運行編譯命令前,也可使用絕對路徑導一下VCVARS32.BAT。
跟着下來的就是等待編譯完成了。呵呵。
編譯完成後,D:\Boost\boost_1_37_0\libs\regex\build\vc6裏面的.dll和.lib就是咱們所須要的東東了,include files在D:\Boost\boost_1_37_0\boost\regex文件夾裏。
方法二:
這個方法是使用bjam來編譯,什麼是bjam?bjam是一個對Boost庫進行編譯的批處理命令行工具,在那裏能夠獲得它?也是在Boost庫裏面,可是是以源代碼形式提供的,因此咱們得首先把bjam編譯出來,方法以下:
1>定位到D:\Boost\boost_1_37_0\tools\jam\src,使用記事本打開build.bat(先備份一下),裏面有部份內容以下:
//-------------------------------------------------------------------------------------------
:Guess_Toolset
REM Try and guess the toolset to bootstrap the build with...
REM Sets BOOST_JAM_TOOLSET to the first found toolset.
REM May also set BOOST_JAM_TOOLSET_ROOT to the
REM location of the found toolset.
if "_%ProgramFiles%_" == "__" set ProgramFiles=C:\Program Files
//-------------------------------------------------------------------------------------------
若是你的VC安裝在D盤,則要改一下紅色部分配置。
打開cmd定位到D:\Boost\boost_1_37_0\tools\jam\src,打上build.bat直接運行,開始編譯,完成後,在D:\Boost\boost_1_37_0\tools\jam\src\bin.ntx86下面有一個bjam.exe,這個就是咱們想要的bjam了。
上面獲得bjam後,把它拷貝到D:\Boost\boost_1_37_0目錄下,而後咱們如今可使用bjam來編譯咱們的regex子庫了,打開cmd定位到D:\Boost\boost_1_37_0,打上命令"bjam --toolset=msvc-6.0 --build-type=complete --prefix=d:\boost install --with-regex",就能夠開始編譯了。
編譯完成後,D:\Boost下面的include和lib文件夾的東西,就是咱們工程須要的東東了。
5.好,如今咱們介紹怎麼編譯整個Boost庫,就是說一下把Boost庫裏面全部的子庫所有編譯完後,其實很簡單,跟上面編譯單個子庫差水多的命令行,方法以下:
把bjam拷貝到D:\Boost\boost_1_37_0目錄下,打開cmd定位到D:\Boost\boost_1_37_0,打上命令"bjam --toolset=msvc-6.0 --build-type=complete --prefix=d:\boost install",就能夠開始編譯了。上面命令中的--build-type=complete 好像跟之前的版本不同,之前的好像是使用-sBuild="Debug Release"相似的參數,只有使用這--build-type=complete 才能編譯出Debug 和Release版本的庫,使用-sBuild不行。
等待吧,挺久的,據說是2個小時。
編譯完後,D:\Boost下面的include和lib文件夾的東西,就是咱們工程須要的東東了。
6.如今,Boost庫所有子庫假設已經編譯好了,獲得D:\Boost\include和D:\Boost\lib,有兩個東東就能夠在咱們的工程裏面使用Boost庫的功能了。
咱們如今使用VC 6.0開發,得先把VC 6.0配置一下,以下:
在VC->Tools->Options->Directories->Include files 加上D:\Boost\include\boost-1_37\boost
在VC->Tools->Options->Directories->Library files 加上D:\Boost\lib
把上面先前設置過的,
在VC->Tools->Options->Directories->Include files裏面增長D:\Boost\boost_1_37_0
刪掉。
而後打開上面先前編譯經過的工程,rebuild一下,是否是也能夠編譯過去如今?
好了,如今可使用VC 6.0來使用Boost庫做開發了。。。