作者在 2014-01-29 22:39:46 发布以下内容
今天在同学的帮助下,成功的在vc6.0中安装和编译boost库,遇到不少问题,并解决之,把过程大概写一下,以便以后参阅:
(主要参考文章:http://h-lm.spaces.live.com/blog/cns!C523F565A10E3B66!749.entry
http://blog.csdn.net/liroket/archive/2009/06/10/4257308.aspx)
据说c6.0不支持目前比较新版本,如:boost1.36。这里给出VC6.0编译boost1.34.1的流程。
1.从boost.sourceforge.net下载相对应版本的压缩文件,我下载的是boost_1_34_1.zip。
2.解压缩到本地磁盘(这里为d盘),进入F:\boost_1_34_1\tools\jam\src,鼠标右键-》编辑“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 Studio\VC98\bin\VCVARS32.BAT" (
set "BOOST_JAM_TOOLSET=msvc"
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio\VC98\"
goto :eof)
set "BOOST_JAM_TOOLSET=msvc"
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio\VC98\"
goto :eof)
是否和你的vc6.0路径相同。如果不同可以写成绝对路径。
3.修改build.bat之后保存,双击运行build.bat。这时会在F:\boost_1_34_1\tools\jam\src\bin.ntx86下生成一个bjam.exe文件。
4.把bjam.exe拷贝到F:\boost_1_34_1\目录下。
5.开始-》运行中输入“cmd”,进入命令行窗口,然后进入boost目录,我这是为
cd D:\boost_1_34_1\boost_1_34_1
并设置临时环境变量
SET MSVC_ROOT="d:\Program Files\Microsoft Visual Studio\VC98"
SET VISUALC="d:\Program Files\Microsoft Visual Studio\VC98"
SET VISUALC="d:\Program Files\Microsoft Visual Studio\VC98"
如果需要编译python模块还需要下载安装python,并设置以下环境变量
SET JAM_TOOLSET=VISUALCSET PYTHON_ROOT=f\Python23
SET PYTHON_VERSION=2.3
SET JAM_TOOLSET=VISUALCSET PYTHON_ROOT=f\Python23
SET PYTHON_VERSION=2.3
(我没有安装python)
6.环境变量设置好之后便可以开始编译了
在第5步中的命令行窗口中输入
在第5步中的命令行窗口中输入
bjam -sTOOLS=msvc
并回车
7.编译完成后输入
bjam install
会在c:\boost目录下生成一系列的include和lib文件夹,
把C:\Boost\include\boost-1_34_1下的boost文件夹拷贝到D:\Program Files\Microsoft Visual Studio\VC98\include目录下,把lib文件夹下的所有内容拷贝到D:\Program Files\Microsoft Visual Studio\VC98\Lib下。就可以编写程序测试结果了!
(也可以分别把c盘boost目录下的include和lib 加入到tools->options->dictionaries中的include和lib搜索路径中,include C:\BOOST\INCLUDE\BOOST-1_34_1 lib C:\BOOST\LIB
不过我这么设置后会出现下面的错误:
c:\boost\include\boost-1_34_1\boost\regex\v4\perl_matcher_common.hpp(767) : fatal error C1001: INTERNAL COMPILER ERROR
安装上面的方法分别把include 和lib 的内容拷贝到vc的安装目录对应文件夹下,就没有错误了
安装上面的方法分别把include 和lib 的内容拷贝到vc的安装目录对应文件夹下,就没有错误了
)
8.据说需要重新构建boost_regex库,我的步骤如下:
(1).打开cmd窗口,改变目录到 D:\Program Files\Microsoft Visual Studio\VC98\Bin 运行
VCVARS32.BAT
VCVARS32.BAT
(2).改变目录到<boost>\libs\regex\build 运行
nmake -fvc6.mak
nmake -fvc6.mak
(3). 在上一步运行完后,创建一组lib、dll文件在目录<boost>\libs\regex\build\vc6下,运行
nmake -fvc6.mak install
lib文件拷贝到<VC6>\lib目录下,dll文件拷贝到<VC6>\bin下,<VC6>是Visual C++ 6的跟目录(C:\Program Files\Microsoft Visual Studio\VC98)
nmake -fvc6.mak install
lib文件拷贝到<VC6>\lib目录下,dll文件拷贝到<VC6>\bin下,<VC6>是Visual C++ 6的跟目录(C:\Program Files\Microsoft Visual Studio\VC98)
使用下面的命令可以删除编译时创建的临时文件
nmake -fvc6.mak clean
nmake -fvc6.mak clean
测试代码:
#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
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 ;
}
{
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