vc6.0环境下编译Boost 1.34.1

 

据说c6.0不支持目前比较新版本,如:boost1.36。这里给出VC6.0编译boost1.34.1的流程。

1.从boost.sourceforge.net下载相对应版本的压缩文件,我下载的是boost_1_34_1.zip。

2.解压缩到本地磁盘(这里为d盘),进入F:boost_1_34_1toolsjamsrc,鼠标右键-》编辑“build.bat”文件。

把if “_%ProgramFiles%_” == “__” set ProgramFiles=c:Program Files

改成自己vc6.0的安装路径,我的是d盘program files,因此我改成了if “_%ProgramFiles%_” == “__” set ProgramFiles=d:Program Files

然后,顺便检查一下该文件中

if EXIST “%ProgramFiles%Microsoft Visual StudioVC98binVCVARS32.BAT” (
set “BOOST_JAM_TOOLSET=msvc”
set “BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%Microsoft Visual StudioVC98″
goto :eof)

是否和你的vc6.0路径相同。如果不同可以写成绝对路径。

3.修改build.bat之后保存,双击运行build.bat。这时会在F:boost_1_34_1toolsjamsrcbin.ntx86下生成一个bjam.exe文件。

4.把bjam.exe拷贝到F:boost_1_34_1目录下。

5.开始-》运行中输入“cmd”,进入命令行窗口,然后进入boost目录,我这是为

cd D:boost_1_34_1boost_1_34_1

并设置临时环境变量

SET MSVC_ROOT=”d:Program FilesMicrosoft Visual StudioVC98″
SET VISUALC=”d:Program FilesMicrosoft Visual StudioVC98”

如果需要编译python模块还需要下载安装python,并设置以下环境变量
SET JAM_TOOLSET=VISUALCSET PYTHON_ROOT=fPython23
SET PYTHON_VERSION=2.3

(我没有安装python)

6.环境变量设置好之后便可以开始编译了
在第5步中的命令行窗口中输入

bjam -sTOOLS=msvc

并回车

7.编译完成后输入

bjam install

会在c:boost目录下生成一系列的include和lib文件夹,

vc0

 

把C:Boostincludeboost-1_34_1下的boost文件夹拷贝到D:Program FilesMicrosoft Visual StudioVC98include目录下,把lib文件夹下的所有内容拷贝到D:Program FilesMicrosoft Visual StudioVC98Lib下。就可以编写程序测试结果了!

(也可以分别把c盘boost目录下的include和lib 加入到tools->options->dictionaries中的include和lib搜索路径中,include  C:BOOSTINCLUDEBOOST-1_34_1  lib  C:BOOSTLIB

不过我这么设置后会出现下面的错误:

c:boostincludeboost-1_34_1boostregexv4perl_matcher_common.hpp(767) : fatal error C1001: INTERNAL COMPILER ERROR
安装上面的方法分别把include 和lib 的内容拷贝到vc的安装目录对应文件夹下,就没有错误了

8.据说需要重新构建boost_regex库,我的步骤如下:

(1).打开cmd窗口,改变目录到 D:Program FilesMicrosoft Visual StudioVC98Bin 运行
VCVARS32.BAT

(2).改变目录到<boost>libsregexbuild 运行
nmake -fvc6.mak

(3). 在上一步运行完后,创建一组lib、dll文件在目录<boost>libsregexbuildvc6下,运行
nmake -fvc6.mak install
lib文件拷贝到<VC6>lib目录下,dll文件拷贝到<VC6>bin下,<VC6>是Visual C++ 6的跟目录(C:Program FilesMicrosoft Visual StudioVC98)

使用下面的命令可以删除编译时创建的临时文件
nmake -fvc6.mak clean

测试代码:

#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>

using  namespace std;
using  namespace boost;

int main( int argc, char * argv[])
{
regex expression_r_r_r_r( ” (\d+)-(\d+)-(\d+) ” ); // 注意转义方式
string  in ( ” Today: 2007-06-23 ” );
cmatch what;
// 如果用 regex_match 方法将需要完全匹配,
// 不能在字符串中找寻模式,可用于验证输入
if (regex_search( in.c_str(), what, expression_r_r_r_r))
{
for ( int i = 0 ;i < what.size();i ++ )
{
cout << ” str : ” << what[i].str() << endl;
}
}
return  0 ;
}

——————————————————————————————-

编译运行得到如下结果:

str :  2007-06-23
str : 2007
str : 06
str : 23
Press any key to continue

done!

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.