boost-使用说明

1、

  boost库中大部分组件不需要编译,直接包含对应头文件即可使用,如#include "boost/array.hpp",因为组件的声明和实现都包含在头文件hpp中。

  其它一些库需要编译成静态库或动态库才能使用,如date_time、regex、thread、locale、signals、python等,不过这其中有些库不需要编译也可以使用其部分功能,而且有些库有不必编译的替代品,如xpressive可替换regex,signals2可以替换signals。

2、

windows下编译boost库date_time方法:
①、官网下载解压boost库文件,当前最新版本为1.61.0,运行根目录中的bootstrap.bat文件,其会生成bjam.exe 。
②、在tools/build下找到user-config.jam文件,去掉57行前面的#注释,使之使用msvc(实际中发现省略这步也可以)。
③、打开命令行,例如运行 bjam --toolset=msvc --build-type=complete --address-model=64 --with-date_time stage 表示:
    toolset指定编译器,如msvc、gcc;
    build-type=complete为编译所有类型。

    address-model为指定32或64位版本。
    with用来指定要编译哪个库,要编译所有库则忽略该选项;
    stage指定使用本地构建,如果使用install则会将库安装到默认路径(windows下为C:oost,linux下/usr/local);

④、关于编译生成的lib文件名:

     vc100表示vc2010,vc140表示vc2015。
     mt:支持多线程
     s:静态库标识
     gd:debug版本

  所以“xxx-mt-sgd-xxx.lib”对应的应该是“多线程调试(/MTd)”,“xxx-mt-s-xxx.lib”对应的应该是“多线程(/MT)”。

⑤、运行bjam --show-libraries可以查看需要编译成库才能使用或使用部分功能的库。

⑥、如果不想编译date_time库,可以采用直接嵌入date_time库源码的方式来使用date_time库,而且需要在包含源码头文件之前定义宏BOOST_DATE_TIME_SOURCE、BOOST_DATE_TIME_NO_LIB或BOOST_ALL_NO_LIB。

这是我编译好的一些必须编译成库才能使用的boost静态库:http://download.csdn.net/detail/milanleon/9626409

3、

  使用boost中array示例:

 如仅按以下方式包含boost头文件的话,VS会报找不到文件错误:

//main.cpp

#include "boost/array.hpp" //boost文件夹与main.cpp在同一目录,所以可以直接包含

int main()
{    
    boost::array<int, 5> ary;

    return 0;
}

因为array.hpp中也使用了其它boost头文件,而且包含形式为:

//array.hpp

#include <boost/detail/iterator.hpp>
#include <boost/throw_exception.hpp>
#include <boost/functional/hash_fwd.hpp>
......

所以还应添加boost文件夹所在的目录为项目“附加包含目录”。

4、使用date_time库的示例

  date_time库中需要使用其静态库或动态库,所以我们将上面所说的编译好的boost静态库的目录添加到当前项目的附加库目录:项目属性-链接器-附加库目录。

#include "boostdate_timegregoriangregorian.hpp"

int main()
{    
    boost::gregorian::date d1(2010, 1, 1);

    return 0;
}
View Code

 ——本文引用和参考出处:《boost程序库完全开发指南》.罗剑锋

原文地址:https://www.cnblogs.com/milanleon/p/5857215.html