1. 下载与安装

1.1 安装方法1

(1) 下载

https://www.boost.org/

或者使用 https://sourceforge.net/projects/boost/files/boost-binaries/

当前最新版本是1.70.0

(2)配置

下载好后,解压到自己的IDE库目录中,找到其中的bootstrap.bat文件

选择vs2017 —> visual studio tools —> vc —> x86_x64 Cross Tools Command Prompt for VS 2,打开命令行:

切换到boost_1_70_0的安装目录。执行那个.bat文件

(3)执行后,将会在boost当前目录下增加了几个文件,找到其中的bjam.exe

(4)生成 包含目录和库目录

命令行执行:

  1. bjam.exe install stage --toolset=msvc-14.1 architecture=x86 address-model=64 --stagedir="D:\Pros\IDE\boost_1_70_0_comp\boost_lib64-msvc-14.1" link=static runtime-link=shared runtime-link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization threading=multi debug release

b2的更多使用方式,输入 b2 --help 便可查看。

注意,执行的命令“--with-system --with-thread --with-date_time --with-filesystem --with-serialization”,会仅生成这几个库,如boot_iostreams等库就不会生成。

没有with的话,就默认全部输出。

Note:

1) 有关b2的参数

// 如果要获取动态库:

bjam install stage --toolset=msvc-14.1 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release

// 如果是要获取静态库:

bjam install stage --toolset=msvc-14.1 --stagedir="C:\Boost\boost_vc_120" link=static runtime-link=static threading=multi debug release

其中,注意修改--toolset=msvc-14.1,将14.1修改成对应的vs版本号,14.1是VS2017的版本号。

目标地址也要修改成你所需的。

或参考, 增加如下参数

  1. --without-graph --without-graph_parallel

注意,不要漏了install,它会帮你把头文件集合到一个文件夹中。

MSVC 版本号对应:

打开Visual Studio Installer,选择相应的工具集进行安装。

  1. MSVC++ 14.1 _MSC_VER == ??00 (Visual Studio 2017)
  2. MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
  3. MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
  4. MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
  5. MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
  6. MSVC++ 9.0  _MSC_VER == 1500 (Visual Studio 2008)
  7. MSVC++ 8.0  _MSC_VER == 1400 (Visual Studio 2005)
  8. MSVC++ 7.1  _MSC_VER == 1310 (Visual Studio 2003)
  9. MSVC++ 7.0  _MSC_VER == 1300
  10. MSVC++ 6.0  _MSC_VER == 1200
  11. MSVC++ 5.0  _MSC_VER == 1100

vs2017 可以支持boost c++ library 针对msvc-14.1的编译选项。

等待5-10min即可完成。

2)直接用运行b2.exe

可以在文件夹中找到它,然后双击。后面就是漫长的编译过程啦,至少需要二十来分钟。

最后两个路径会在使用Boost库时工程属性中包含目录库目录中用到。

这时boost库已经安装、编译成功。

1.2 安装方法2 (博主推荐)

或者使用下面的方式进行操作:

也可以换下载路径:https://dl.bintray.com/boostorg/release/1.70.0/binaries/ 去下载。

此时使用命令:

  1. bjam stage --toolset=msvc-14.1 architecture=x86 address-model=64 --without-graph --without-graph_parallel
    --stagedir="your_root_path_of_boost\boost_1_70_0\bin\vc141-x64" link=static runtime-link=shared runtime-link=static threading=multi debug release

搭配环境变量:

  1. your_root_path_of_boost\boost_1_70_0
  1. your_root_path_of_boost\boost_1_70_0\bin\vc14-x64\lib

1.3 出现问题

如果在类似VS调用时,出现错误    LNK1104    无法打开文件“libboost_thread-vc141-mt-gd-x64-1_69.lib”

下面是结局的步骤。先说一下报错的原因,这个文件名是libboost_thread-vc141-mt-gd-1_69.lib,

第一个表示的是vc141表示使用的是vc141进行编辑的,也就是vc2017,如果是vs2015就应该出来vc140;

第二个mt表示的是使用threading=muti多线程编译出来的。

第三个gd表示的是debug版本,与其对应的是release版本。

第四个x64表示的是64位系统,如果是x86表示的就是32位系统,还有1_69表示的就是boost版本是1_69_0.,如果是1_70表示的就是boost1_70_0。所以这个地方注意两点,1就是你下载的boost版本要对应,2就是使用vs编译的版本要对应。

使用 1.2 方法下载boost。使用VS开发人员命令提示,右键使用管理员身份打开。

然后运行里面的bootstrap.bat文件。

然后使用下列语句进行编译:

bjam stage --toolset=msvc-14.1 --without-python --stagedir="c:\Boost" link=static runtime-link=shared runtime-link=static threading=multi debug release

然后就是等待漫长的编译过程,在这个过程中,我们可以先看一下编译出来的东西是不是跟我们预期的一样的。

可以看到写的路径c:\boost里面已经有了一个lib文件夹,这里面就是我们所需要的lib

2. 测试

(1)新建vs2017 c++项目,并添加boost依赖库

点击菜单栏 项目——>属性——>选择VC++目录,在包含目录 和 库目录添加以上2个路径。

(2)代码

  1. #include <boost/lexical_cast.hpp>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5. using namespace boost;
  6.  
  7. int main()
  8. {
  9. //system("chcp 65001");
  10.  
  11. double a = lexical_cast<double>("3.1415926");
  12. string str = lexical_cast<string>("3.1415926");
  13. cout << "This is a number: " << a << endl;
  14. cout << "This is a string: " << str << endl;
  15. int b = 0;
  16. try {
  17. b = lexical_cast<int>("neo");
  18. }
  19. catch (bad_lexical_cast& e) {
  20. cout << e.what() << endl;
  21. }
  22. return 0;
  23. }

参考VS工程的源码: boost_test.rar

3、boost库的说明

c++ boost库官网

官网最新版文档说明:https://www.boost.org/doc/libs/1_70_0/

Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称

Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中使用需要谨慎。

Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用。

Boost社区建立的初衷之一就是为C++的标准化工作提供可供参考的实现,Boost社区的发起人Dawes本人就是C++标准委员会的成员之一。在Boost库的开发中,Boost社区也在这个方向上取得了丰硕的成果。在送审的C++标准库TR1中,有十个Boost库成为标准库的候选方案。在更新的TR2中,有更多的Boost库被加入到其中。从某种意义上来讲,Boost库成为具有实践意义的准标准库。
可下载Boost C++ Libraries安装boost库。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。里面有许多具有工业强度的库,如graph库。

3.1 主要分类

按照功能分类 的Boost库列表按照实现的功能,Boost 可为大致归入以下20个分类,在下面的分类中,有些库同时归入几种类别。

  1. 字符串和文本处理
  2. a) Conversion
  3. b) Format
  4. c) IOStream
  5. d) Lexical Cast
  6. e) Regex
  7. f) Spirit
  8. g) String Algo
  9. h) Tokenizer
  10. i) Wave
  11. j) Xpressive
  12.  
  13. 容器
  14. a) Array
  15. b) Bimap
  16. c) Circular Buffer
  17. d) Disjoint Sets
  18. e) Dynamic Bitset
  19. f) GIL
  20. g) Graph
  21. h) ICL
  22. i) Intrusive
  23. j) Multi-Array
  24. k) Multi-Index
  25. l) Pointer Container
  26. m) Property Map
  27. n) Property Tree
  28. o) Unordered
  29. p) Variant
  30.  
  31. 迭代器
  32. a) GIL
  33. b) Graph
  34. c) Iterators
  35. d) Operators
  36. e) Tokenizer
  37.  
  38. 算法
  39. a) Foreach
  40. b) GIL
  41. c) Graph
  42. d) Min-Max
  43. e) Range
  44. f) String Algo
  45. g) Utility
  46.  
  47. 函数对象和高阶编程
  48. a) Bind
  49. b) Function
  50. c) Functional
  51. d) Functional/Factory
  52. e) Functional/Forward
  53. f) Functional/Hash
  54. g) Lambda
  55. h) Member Function
  56. i) Ref
  57. j) Result Of
  58. k) Signals
  59. l) Signals2
  60. m) Utility
  61.  
  62. 泛型编程
  63. a) Call Traits
  64. b) Concept Check
  65. c) Enable If
  66. d) Function Types
  67. e) GIL
  68. f) In Place Factory, Typed In Place Factory
  69. g) Operators
  70. h) Property Map
  71. i) Static Assert
  72. j) Type Traits
  73.  
  74. 模板元编程
  75.  
  76. a) Function Types
  77. b) Fusion
  78. c) MPL
  79. d) Proto
  80. e) Static Assert
  81. f) Type Traits
  82.  
  83. 预处理元编程
  84. a) Preprocessors
  85.  
  86. 并发编程
  87.  
  88. a) Asio
  89. b) Interprocess
  90. c) MPI
  91. d) Thread
  92.  
  93. 数学和数字
  94.  
  95. a) Accumulators
  96. b) Integer
  97. c) Interval
  98. d) Math
  99. e) Math Common Factor
  100. f) Math Octonion
  101. g) Math Quaternion
  102. h) Math/Special Functions
  103. i) Math/Statistical Distributions
  104. j) Multi-Array
  105. k) Numeric Conversion
  106. l) Operators
  107. m) Random
  108. n) Rational
  109. o) uBLAS
  110.  
  111. 排错和测试
  112.  
  113. a) Concept Check
  114. b) Static Assert
  115. c) Test
  116.  
  117. 数据结构
  118.  
  119. a) Any
  120. b) Bitmap
  121. c) Compressed Pair
  122. d) Fusion
  123. e) ICL
  124. f) Multi-Index
  125. g) Pointer Container
  126. h) Property Tree
  127. i) Tuple
  128. j) Uuid
  129. k) Variant
  130.  
  131. 图像处理
  132.  
  133. a) GIL
  134.  
  135. 输入输出
  136.  
  137. a) Asio
  138. b) Assign
  139. c) Format
  140. d) IO State Savers
  141. e) IOStreams
  142. f) Program Options
  143. g) Serialization
  144.  
  145. 跨语言混合编程
  146.  
  147. a) Python
  148.  
  149. 内存管理
  150.  
  151. a) Pool
  152. b) Smart Ptr
  153. c) Utility
  154.  
  155. 解析
  156. a) Spirit
  157.  
  158. 编程接口
  159. a) Function
  160. b) Parameter
  161.  
  162. 杂项
  163. a) Compressed Pair
  164. b) Conversion
  165. c) CRC
  166. d) Date Time
  167. e) Exception
  168. f) Filesystem
  169. g) Flyweight
  170. h) Lexical Cast
  171. i) Meta State Machine
  172. j) Numeric Conversion
  173. k) Optional
  174. l) Polygon
  175. m) Program Options
  176. n) Scope Exit
  177. o) Statechart
  178. p) Swap
  179. q) System
  180. r) Timer
  181. s) Tribool
  182. t) Typeof
  183. u) Units
  184. v) Utility
  185. w) Value Initialized
  186.  
  187. 编译器问题的变通方案
  188.  
  189. a) Compatibility
  190. b) Config
  191.  
  192. 3.2 常用库
  193. Regex
  194. 正则表达式库
  195. Spirit
  196. LL parser framework,用C++代码直接表达EBNF
  197. Graph
  198. 图组件和算法
  199. Lambda
  200. 在调用的地方定义短小匿名的函数对象,很实用的functional功能
  201. concept check
  202. 检查泛型编程中的concept
  203. Mpl
  204. 用模板实现的元编程框架
  205. Thread
  206. 可移植的C++多线程库
  207. Python
  208. C++类和函数映射到Python之中
  209. Pool
  210. 内存池管理
  211. smart_ptr
  212. 5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章:
  213. 相关图书编辑
  214. Boost程序库完全开发指南:深入C++“准”标准库
  215. C++11/14高级编程:Boost程序库探秘(第3版)
  216. Boost程序库探秘:深度解析C++准标准库

参考文章

VS2017 配置 boost_1_70的更多相关文章

  1. Qt5.11.1安装与VS2017配置

    Qt5.11.1安装与VS2017配置 转 https://blog.csdn.net/gaojixu/article/details/82185694 文章目录 Qt5.11.1安装与VS2017配 ...

  2. VS2017 配置QT5

    QT安装 1. QT下载 2. 安装过程中,组件的选择(图自https://blog.csdn.net/gaojixu/article/details/82185694) 3. 安装完成 VS2017 ...

  3. OpenCV3.42+VS2017配置+模块计算机类型“X86”与目标计算机类型“x64”冲突”的问题解决

    目录 OpenCV3.42+VS2017配置 Visual Studio 2017 第三方依赖设置,附加依赖项和附加库目录 "fatal error LNK1112: 模块计算机类型&quo ...

  4. VS2017配置opencv-4.2.0详细步骤

    VS2017配置opencv-4.2.0详细步骤   1.下载opencv的安装包并解压.下载网址https://sourceforge.net/projects/opencvlibrary/ 图1 ...

  5. VS2017 配置glfw3

    直接下载源码使用VS进行编译. 1. 源码下载地址http://www.glfw.org/download.html, 点击Source Package 2. 打开cmake-3.12.1-win32 ...

  6. VS2017 配置ImageMagick

    以下配置仅供参考,我配置完了怎样都用不了... 直接下载源码使用VS进行编译. 源码下载地址:http://imagemagick.org/script/install-source.php#wind ...

  7. VS2017 配置freeglut3.0.0

    配置freeglut: 1. 先下载cmake和freeglut3.0.0文件,并使用cmake编译freeglut,再使用vs2017生成解决方案,详细步骤见https://blog.csdn.ne ...

  8. 在windows10下vs2017配置opencv4.0.0

    第一次配置时,有些.dll文件出错,所以用重新下载opencv配置了一遍,终于可以了,喜极而泣! 一.下载OpenCV4.0 直接到官网https://opencv.org/下载 然后在下个页面选择 ...

  9. opencv3.4.1和vs2017配置

    官网下载opencv,双击之后会将文件提取出来,提取出来的文件放在一个合适的位置(选个好地方,不要乱改,环境的配置依赖于这个目录),我放在了D:\program下 配置环境变量: 右键此电脑--> ...

随机推荐

  1. CentOS7 通过systemd 添加开机重启服务

    现在越来越多的环境采用 CentOS 7 作为基础配置,特别是 Hadoop生态 如果要测试或部署环境需要启动很多组件(zookeeper.kafka.redis等等),如下内容是在操作系统层实现开机 ...

  2. @PathVariable不起作用,报错:Cannot resolve @PathVariable ' '

    @PathVariable是占位符注解.可以把Url中变量的值传递到方法参数中. 示例如下: @PostMapping("/user/name/{id}") @ResponseBo ...

  3. 刷题记录:[CISCN 2019 初赛]Love Math

    目录 刷题记录:[CISCN 2019 初赛]Love Math 思路一 思路二 总结 刷题记录:[CISCN 2019 初赛]Love Math 题目复现链接:https://buuoj.cn/ch ...

  4. 【大数据应用技术】作业十一|分布式并行计算MapReduce

    本次作业在要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319  1.用自己的话阐明Hadoop平台上HDFS和MapRe ...

  5. tomcat启动慢的解决办法

    SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generatio ...

  6. 请简述web开发中的兼容问题

    1,浏览器默认的内外边距不一样,所以用通用选择器*设置margin和padding来设置.2,块标签设置浮动后,有设置margin的情况下,在ie6下的margin比别的浏览器大.3,img标签会有默 ...

  7. 迁移Git项目到Gitlab

    假定Gitlab已经安装, 假定要迁移的Git项目目录为 demo 首先在Gitlab里创建一个新的project, 名称为demo (或者其他名称都可以) 然后在现有的Git项目目录下, 进行以下操 ...

  8. PHP 相关性系数计算

    相关系数公式 参考:https://baike.baidu.com/item/相关系数 PHP 实现代码 public static function calc($list) { $cv = []; ...

  9. [LeetCode] 283. Move Zeroes 移动零

    Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...

  10. 【VS开发】#pragma pack(push,1)与#pragma pack(1)的区别

    这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n)             作用:C编译器将按照n个字节对 ...