一点一滴成长

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

boost-使用说明

1、

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

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

2、

  我们可以一次性编译全部的boost库:Windows下的话,运行bootstrap.bat文件,会生成bjam.exe和b2.exe后,在命令行下运行b2.exe来生成boost库文件(默认生成目录为当前目录下的bin),比如 b2 toolset=msvc-14.0 variant=debug runtime-link=static threading=multi 表示生成工具使用vs2015,生成版本为debug版,库类型为静态库,运行库为多线程版本。需要注意的是我们的项目版本应该与生成工具版本相对应,比如项目是VS2019,那么toolset应该设置为msvc-14.2。如果项目与库不对应的话,比如项目是2019,boost库是VS2015生成的,那么可以修改项目设置中的“平台工具集”为Visual Studio 2015 (v140),目标平台版本也应该由10.0.1(Win10)调整为8.1(Win8)。

  也可以只编译单个的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:\boost,linux下/usr/local);

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

     vc100表示vc2010,vc140表示vc2015,vc142表示vc2019。
     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 "boost\date_time\gregorian\gregorian.hpp"

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

    return 0;
}
View Code
复制代码

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

5、XP下运行boost

  vs2019编译运行在XP上程序:https://blog.csdn.net/tomwillow/article/details/109741916

  boost支持XP:https://blog.csdn.net/q893332169/article/details/121673342

posted on   整鬼专家  阅读(1174)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示