zoukankan      html  css  js  c++  java
  • 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程序库完全开发指南》.罗剑锋

  • 相关阅读:
    时区 : America/Mexico_City 中文:美国中部时间(墨西哥城) 的夏令时
    Android中的常见时区
    嵌套滚动demo
    Android之获得内存剩余大小与总大小
    通过ip获取地理位置信息
    9.png(9位图)在android中作为background使用导致居中属性不起作用的解决方法
    Android ActivityManagerService 基本构架详解
    Eclipse 常用快捷键 (动画讲解)(转载)
    eclipse安装svn插件,在输入url后,一直卡在in progress界面不懂。
    android——背景颜色渐变(梯度变化)
  • 原文地址:https://www.cnblogs.com/milanleon/p/5857215.html
Copyright © 2011-2022 走看看