安装Boost

原创 2006年05月23日 04:55:00
对于vs2003.net,如果只安装boost 相对比较简单,可以跳到步骤2,这里要安装boost 的stlport 版本。即同时安装stlport 和 以stlport 为标准库编译 boost .
1、先安装stlport
进入stlport/src 目录
运行nmake –f vc71.mak install
这样默认stlport头文件放入
..../Microsoft Visual Studio .NET 2003/Vc7/include/stlport 目录
在vc 的工具-〉选项-〉项目-〉vc++目录 中设置stlport头文件目录。
注意目录位置要放在vc 头文件链接的上面,这样#include 标准库是优先选择了stlport 而不是 vc 自带的stl .
lib 自动拷贝到了vc7/lib 中可以不用设置。

对于5.02 版本,src目录中没有makefile 文件, 有cmd控制台进入build/ lib 目录,执行完 configure.bat 然后再对vc71.mak 进行 make

2、编译boost,  先编译bjam:
a 运行tools/build/jam_src/build.bat,然后会看见 bin.ntx86目录,里面有bjam.exe

b设置环境变量 如: 
PATH= e:/boost1.32.0/boost/tools/build/jam_src/bin.ntx86
 或者把bjam 拷贝到boost 根目录

SET VC71_ROOT=
"C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7"
这个也可以不用设置。

使用vc提供的工具 visual studio.net 2003 命令提示控制台,进入boost目录:执行

bjam  "-sTOOLS=vc-7_1 " install

便可把相关的头文件和编译后的库文件默认安装到c:/boost。如果不使用stlport 对于vc2003安装就这么简单,


对于支持stlport 的boost 安装执行

bjam "-sTOOLS=vc-7_1-stlport" "-sSTLPORT_PATH=E:/STLPort
"-sSTLPORT_VERSION=4.6.2" stage
我安装的stlport是4.6.2版本的,注意上面指定的stlport目录和版本,在编译过程中会出错但能编译完。
如:F:/boost/boost_1_32_0/boost/lexical_cast.hpp(150) : error C2679:
还有其他一些原因不能编译出来的库。
大部分安装都会有这个问题,可以添加 "-sBUILD=<native-wchar_t>off" 选项关闭编译时的/zc:wchar_t选项
bjam "-sTOOLS=vc-7_1-stlport" "-sBUILD=<native-wchar_t>off"  "-sSTLPORT_PATH=E:/STLPort" "-sSTLPORT_VERSION=4.6.2"  stage
注意按照上面 stlport  lib 的目录是在
E:/STLPort/stlport-4.6.2/lib ,后面数字是版本号指定的目录中的数字

编译后在boost 根目录出现一个stage 目录,里面是所有编译过的库。我的stlport 版本有158个文件,vc 200多一些,可见stlport 有些库没出来,多半是跟wchar_t有关的。

完成后可以测试下面的程序
#include "stdafx.h"
#include <iostream>
#include <boost/regex.hpp>
#include <boost/thread.hpp>

int main()

    // 3 digits, a word, any character, 2 digits or "N/A", 
    // a space, then the first word again
    boost::regex reg("//d{3}([a-zA-Z]+).(//d{2}|N/A)//s//1");   
    std::string correct="123Hello N/A Hello"; 
    std::string incorrect="123Hello 12 hello";   
    assert(boost::regex_match(correct,reg)==true); 
    assert(boost::regex_match(incorrect,reg)==false);
    boost::regex reg1("(new)|(delete)");
    boost::smatch m;std::string s=  "Calls to new must be followed by delete. /  Calling simply new results in a leak!";
    if (boost::regex_search(s,m,reg1))
    {  // Did new match? 
        if (m[1].matched)   
            std::cout << "The expression (new) matched!/n"; 
        if (m[2].matched)   
            std::cout << "The expression (delete) matched!/n";
    }
    return 0;
}

注意编译debug 版本设置工程-〉c++ -> 命令行附加选项加入 /GX  /D_STLP_DEBUG。代码生成-〉运行时库必须选择多线程版本的, 没有
/D_STLP_DEBUG  编译时回停留在这里
elif defined(_DEBUG)
#            define BOOST_LIB_RT_OPT "-gdp"
#            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
#            error "Build options aren't compatible with pre-built libraries"
#        else
#            define BOOST_LIB_RT_OPT "-p"

如果没有指定使用多线程版本,编译会提示你缺少libboost_regex-vc71-sgdp-1_xx_1.lib 的库,其实默认编译没有这个库。可能指定一些编译参数会有吧. 如果不指定多线程的话。stlport 的库也有链接问题。这些库基本都是多线程版本的(不代表线程安全)。最好指定为多线程动态库 /md 或 /mdd 版本。静态库编译出来太大了

对于test 库,程序能编译但不能链接,对于vc自带stl 与stl port 都一样,不知道哪里需要设置。里面有些文件直接在vc工程中都不能编译,可能版本还不是太好,错误如下
test_tools::tt_detail::check_impl  , 搜搜网上存在这样问题的不少。这样BOOST_CHECK 之类的宏就不能使用了
error LNK2019: 无法解析的外部符号 "void __cdecl boost::test_tools::tt_detail::check_impl(class boost::test_tools::predicate_result const &,class boost::basic_wrap_stringstream<char> &,class boost::unit_test::basic_cstring<char const >,unsigned int,enum boost::test_tools::tt_detail::tool_level,enum boost::test_tools::tt_detail::check_type,unsigned int,...)" (?check_impl@tt_detail@test_tools@boost@@YAXABVpredicate_result@23@AAV?$basic_wrap_stringstream
@D@3@V?$basic_cstring@$$CBD@unit_test@3@IW4tool_level@123@W4check_type@123@IZZ)

Poco STLPort boost 调试版本链接出错

如果一个工程中有这三个东西 Poco  STLPort  boost 那么它们就会打架 刚开始一编译出错了由于boost存在的原因它会出这么个错误信息: boost\config\auto_lin...
  • wangxvfeng101
  • wangxvfeng101
  • 2011年12月28日 16:35
  • 2222

安装Boost

对于vs2003.net,如果只安装boost 相对比较简单,可以跳到步骤2,这里要安装boost 的stlport 版本。即同时安装stlport 和 以stlport 为标准库编译 boost ...
  • delphihero
  • delphihero
  • 2006年05月23日 04:55
  • 4508

Move semantics and rvalue references in C++11

C++ has always produced fast programs. Unfortunately, until C++11, there has been an obstinate war...
  • gettogetto
  • gettogetto
  • 2017年03月10日 17:01
  • 127

boost在linux下进行安装

1 ,下载boost安装包并解压缩 到 http://www.boost.org/ 下载boost的安装包,以boost_1_61_0.tar.gz为例 下载完成后进行解压缩:tar zxvf ...
  • u011573853
  • u011573853
  • 2016年09月27日 16:58
  • 5514

boost入门及安装

boost简介boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库。boost安装(vs2017+boost_1_64_0+win10)1、到官网下载boost,http://w...
  • s_lisheng
  • s_lisheng
  • 2017年06月05日 20:55
  • 480

cocos完整版改动列表

cocos2d-x-3.13 Aug 22 2016       [HIGHLIGHT] add VR plugin   [HIGHLIGHT] sup...
  • Anzhongliu
  • Anzhongliu
  • 2016年08月31日 14:42
  • 1911

(CodeBlocks+MingW)安装和使用Boost

第一步 是下载codeblocks-12.11mingw-setup.exe,下载地址:: http://www.codeblocks.org/downloads/26.然后安装CodeBlocks....
  • rumswell
  • rumswell
  • 2012年12月11日 17:42
  • 14313

Windows下boost安装及其在VS2013中配置

环境准备:操作系统: Win10 x64 VS版本及平台: vs2013 Win32平台的Debug版本 boost版本: boost_1_60_0下载地址:从https:...
  • u013777351
  • u013777351
  • 2016年02月24日 22:32
  • 8608

Boost库安装

简介 Boost库是一个可移植、提供源码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C...
  • yzhang6_10
  • yzhang6_10
  • 2016年03月19日 20:55
  • 1760

day 1

1.树状数组。。。 查询修改,区间查询修改 应用 求逆序对 cv 二维树状数组 2.线段树 现在我们已经掌握了构造,点修改,点查询,区间...
  • sinat_34943123
  • sinat_34943123
  • 2017年01月21日 07:41
  • 199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安装Boost
举报原因:
原因补充:

(最多只允许输入30个字)