« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9701139 建立时间:2004年12月20日 |

| |
[c++]vc6编译boost 原创空间, 软件技术, 电脑与网络
邢红瑞 发表于 2006/11/23 19:05:02 |
写程序这么多年了,害怕与中国的程序牛打交道.例如以前vc6编译boost1_33_1挺好的,boost_1_34_1就出现了boost_1_34_1\libs\regex\src\regex.cpp(0)NMAKE : fatal error U1077: 'cl' : return code '0x2'错误.听说一位大牛,vc6编译了boost_1_34_1,小心翼翼的问,结果回答 我的编译选项有问题,我看了看,没有问题,编译boost1_33_1也是一样,程序牛不耐烦了,说了一句,编译选项的问题,一定要别人来检查.只好自力更生,出现 fatal error U1077: 'cl' : return code '0x2'一般是出现了vc不认识字符,打开文件一看,一段注释,全部删去注释,继续编译,ok了,程序大牛害人不浅,不知道他是如何蒙混vc编译器过关的.1 下载boost http://www.boost.org/下载,我所下载的版本是1.34.1。2.运行cmd .进入安装VC的目录例如c:\Program Files\Microsoft Visual Studio\VC98\Bin目录3.运行VCVARS32.BAT(这个操作的作用是对此控制台注册VC的环境变量,这样我们就可以在任意目录使用cl进行编译程序)。4.进入Boost的目录例如\boost_1_34_1\tools\build\jam5.修改build.bat脚本的参数(如果必要的话,你的安装目录不是c:盘) 将原参数 if EXIST "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" ( set BOOST_JAM_TOOLSET=msvc set BOOST_JAM_TOOLSET_ROOT=C:\Program Files\Microsoft Visual Studio\VC98\ goto :eof) 修改为(就是你的VC6.0安装的目录,我这里举个例子) if EXIST "D:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" ( set BOOST_JAM_TOOLSET=msvc set BOOST_JAM_TOOLSET_ROOT=D:\Program Files\Microsoft Visual Studio\VC98\ goto :eof)6.在刚才打开的控制台下运行 \boost_1_33_1\tools\build\jam\build_dist.bat 最终会在目录下生成一个名为bin.ntx86的文件夹里面包含一个bjam.exe可执行文件,将其拷贝到\boost_1_33_1目录下7.安装python可以在www.python.org获得,还好不是perl。8.设置环境变量SET MSVC_ROOT=c:\Program Files\Microsoft Visual Studio\VC98SET VISUALC=c:\Program Files\Microsoft Visual Studio\VC98 SET JAM_TOOLSET=VISUALCSET PYTHON_ROOT=C:\Python25SET PYTHON_VERSION=2.5需要注意的是MSVC_ROOTVISUALC和后面的配置不能有引号,也不能有空格,因为boost编译时要拼接路径的。 9开始编译 bjam --build-dir=C:\build-boost --toolset=msvc -sBUILD=debug release static/dynamic",将安装在默认目录C:\Boost
10 默认是不编译regex的,运行VCVARS32.BAT,进入boost\libs\regex\build,运行nmake -fvc6.mak,boost\libs\regex\build多了一个vc6的文件夹,里面是很多lib和dll文件。例子#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 in;cmatch what;cout << "enter test string" << endl;getline(cin,in);if(regex_match(in.c_str(), what, expression)){for(int i=0;i<what.size();i++)cout<<"str :"<<what.str()<<endl;}else{cout<<"Error Input"<<endl;}return 0;}
输入: select name from table输出: str:select name from table str:name str:table
|
|
|