VC6.0编译boost

时间:2024-04-19 15:03:26

今天学习了下VC6.0下boost的编译,只是对regex进行了编译,据说全部编译需要2个多小时,在此记录下学习过程中遇到的问题以便今后查看。

最开始直接从网上(www.boost.org)下载了当前最新版本boost_1_55_0.zip,无法正常编译,查找原因为vc6.0由于对c++标准支持的不是很好,所以当前的最新版本不支持vc6.0编译,于是尝试着下载了比较老的版本boost_1_39_0.7z进行编译。

1、解压

将下载的boost_1_39_0.7z进行解压,最终在我机子上的绝对路径为:D:\boost\boost_1_39_0

解压路径因人而异,不过最好不要包含中文。

2、编译

在“运行”中输入“cmd”,打开doc窗口

输入->cd D:\boost\boost_1_39_0\libs\regex\build  //回车,设置目录

输入->d:  //回车,转到当刚才设置的目录

此时显示如下:

d:\boost\boost_1_39_0\libs\regex\build>

接下来比较关键

将文件VCVARS32.BAT用鼠标拖入当前的doc窗口,然后回车,再输入:nmake -fvc6.mak 回车,开始进行编译。

VCVARS32.BAT文件是用来注册环境变量的,注册后只在当前窗口有效,窗口关闭后消失,这个文件一般位于vc的安装目录下,

我的路径为:D:\1_setup_dir\VC98\Bin 目录下。如果不注册会出现:“‘nmake’不是内部或外部命令....” 类似的错误提示。

编译结束后会在目录D:\boost\boost_1_39_0\libs\regex\build下面会出现文件夹vc6,里面是lib,dll和一些其他文件,其中lib和dll文件是后

面需要的。

.lib,后面的

测试中会出现错误:无法找到 *****39.lib ,后来将lib和dll中的38都改成39则能够通过测试,后来我测试编译版本boost_1_35_0没有出现类似情况。

3、vc6.0配置

首先将编译好的dll和lib拷贝到目录:D:\1_setup_dir\VC98\BoostRex 下,BoostRex自己创建。

然后打开vc6.0,选择Tools->Options->Directories->Include files 添加一行:D:\boost

在选择Tools->Options->Directories->Library files 添加一行:D:\1_setup_dir\VC98\BoostRex

配置完成

4、编程测试

#include "stdafx.h"

#include <cstdlib>

#include <stdlib.h>

#include <boost/regex.hpp>

#include <string>

#include <iostream>

using namespace std;

using namespace boost;

regex expression( "^select ([a-zA-Z])* from ([a-zA-Z]*)" );

int main(int argc, char* argv[])

{

   std::string inStr;  cmatch what;

  cout << "enter test string" <<endl;

  getline(cin, inStr);

  if ( regex_match( inStr.c_str(), what, expression ) )

   {

     for ( int i = 0; i < what.size(); i++ )

    {

      cout << "str:" << what[i].str() << endl;

    }

  }

  else

  {

    cout << "Error Input" << endl;

  }

return 0;

}

输入:

select name from table  //回车两次

输出:

str:select name from table

str:e

str:table

Press any key to continue

对于输出结果的由来还需继续学习

参考文章:http://www.360doc.com/content/11/1028/21/1200324_159951943.shtml