vc6.0下编译boost1.34.1

作者在 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)
是否和你的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"
如果需要编译python模块还需要下载安装python,并设置以下环境变量
SET JAM_TOOLSET=VISUALCSET PYTHON_ROOT=f\Python23
SET PYTHON_VERSION=2.3
(我没有安装python)
6.环境变量设置好之后便可以开始编译了
在第5步中的命令行窗口中输入
bjam -sTOOLS=msvc
并回车
 
7.编译完成后输入
bjam install
会在c:\boost目录下生成一系列的include和lib文件夹,
  vc6.0环境下编译Boost <wbr>1.34.1
把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的安装目录对应文件夹下,就没有错误了
 
8.据说需要重新构建boost_regex库,我的步骤如下:
(1).打开cmd窗口,改变目录到 D:\Program Files\Microsoft Visual Studio\VC98\Bin 运行
VCVARS32.BAT
(2).改变目录到<boost>\libs\regex\build 运行
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 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

C++ | 阅读 2050 次
文章评论,共0条
游客请输入验证码