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; }
——本文引用和参考出处:《boost程序库完全开发指南》.罗剑锋
5、XP下运行boost
vs2019编译运行在XP上程序:https://blog.csdn.net/tomwillow/article/details/109741916
boost支持XP:https://blog.csdn.net/q893332169/article/details/121673342
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!