早就据说过这个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库做开发了。。。