编译 boost 库的步骤:

  1. 从官网下载最新版本的 boost 库(目前最新版本为:boost_1_63_0);下载地址:http://www.boost.org/users/download/
  2. 解压下载的包(boost_1_63_0.7z)。(假设解压到:F:\Download\Chrome\boost\boost_1_63_0)
  3. 打开 Visual Studio 2013 Tools 之 VS2013 开发人员命令提示 工具
  4. 将目标切换到 F:\Download\Chrome\boost\boost_1_63_0 目标
  5. 执行 bootstrap.bat。执行完成后,会生成:b2.exe、bjam.exe、bootstrap.log、project-config.jam 四个文件,其中 b2.exe 与 bjam.exe 都是用来编译 boost 库的两个工具。它们功能一样,bjam.exe 是老版本的,b2.exe 是升级版本的
  6. 执行 b2 stage --toolset=msvc-12.0 --stagedir="F:\Download\Chrome\boost\boost_1_63_0\bin\vc12" link=static runtime-link=shared runtime-link=static threading=multi debug release 执行完成后,会在 F:\Download\Chrome\boost\boost_1_63_0 目标下生成 bin 目录以及 bin.v2 目录。其中 bin 目标是保存最终编译好的各种 lib 库。(命令中的各参数意义,可参阅:http://www.cnblogs.com/zhcncn/p/3950477.html

使用 boost 库步骤:

  1. 将下载解压后的 boost 库包中的 boost 目录(即:F:\Download\Chrome\boost\boost_1_63_0\boost 目录)拷贝到工程相应位置处。(如:Boost\boost_1_63_0 目录下,即最终:Boost\boost_1_63_0\boost)。注意:boost 目录为 boost 源文件目录
  2. 将前面编译生成的 bin\vc12\lib 目录下的 lib 库拷贝到工程目录。(如:Jacc.Kim\JK\lib\Debug)。提示:Jacc.Kim 目录是个人解决方案所在的目录。注意:bin\vc12\lib 目录下的100多个lib文件中并不需要全部拷贝,只需要拷贝自己工程需要用到的库即可。比如:如果只想使用 date_time 库,则只需要拷贝:libboost_date_time-vc120-mt-gd-1_63.lib 库即可。但是有些库是有依赖于其他的一些库的,此时,将需要将那些依赖的库一并拷贝过来。比如:asio 则依赖于 libboost_system-vc120-mt-gd-1_63.lib 库,如果在使用 asio 时,有用到 regex,则还需要拷贝:libboost_regex-vc120-mt-gd-1_63.lib。如果有用到多线程,则还需要:libboost_thread-vc120-mt-gd-1_63.lib、libboost_chrono-vc120-mt-gd-1_63.lib 等等。具体需要什么库,在工程链接时,有缺失的话,系统会提示,只需要照着去找到那些需要的库,并拷贝过来即可。
  3. 设置工程:属性 -> 配置属性 -> C/C++ -> 附加包含目录 增加:$(SolutionDir)Boost\boost_1_63_0 以及 $(SolutionDir)Boost\boost_1_63_0\boost
  4. 设置工程:属性 -> 配置属性 -> 链接器 -> 附加库目录 增加 $(SolutionDir)JK\lib\$(Configuration)。重点说明:此处设置好附加库目录即可,无需像其他静态库那样,还要设置 附加依赖项 中指定具体 libboost_xxx_vc12_-xxx.lib,具体原因,应该是编译时,使用的是 runtime_link=share,即:boost 库间的链接是动态链接的缘故
  5. 之后就可以在工程中使用具体的 boost 库了

编译 boost 库时必需要注意的问题:

  1. 如果编译的是 vs2010 版本的,则目前并没有发现什么问题,使用也正常。按前面的编译命令编译后,所有的 130 多个 lib 库,均全部正确生成
  2. 如果编译的是 vs2013 版本的,则请确保有更新 vs2013 update 5 补丁包。如果没有更新该补丁包,则只有其中的部分 lib 库可以使用,有些库则有可能使用过程中会出现(自己的)工程编译不过的情况。比如:在未更新 update 5 补丁包时,使用 date_time 库时,可正常使用。使用 asio 功能时,如果用到 boost::asio::write() 功能时,则会出现 common_type.hpp 编译不过。提示:msc1.cpp 第 1325 行编译不过。稍微查看一下 common_type.hpp 中的源码,大致就能明白问题原因在于:编译时,使用了 c++11 新特性之可变模板参数特性,说明:如果没更新 vs2013 update 5 则编译器对 c++11 新特性的功能支持并不全面。因此需要更新 update 5 补丁包。
  3. 如果没有更新 vs2013 update 5 补丁包时,在前面编译完 boost 库后,其实就会提示相应的错误。编译后,也只有其中的部分库被成功编译生成(事实上,只有80个库被正确生成,其他库都编译失败)。一旦出现编译失败,则请先正确更新 update 5 补丁包,然后再删除掉 bin 以及 bin.v2 目录,重新按前面的步骤生成 boost 库然后再使用,避免浪费时间

参考文献:

boost_1.63.0编译VS2013的更多相关文章

  1. boost_1.61.0编译安装

    1.下载源码boost_1_61_0.zip 2.进入目录 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shor ...

  2. Qt 5.6.0 动态编译(VS2013 x86 target xp openssl icu webkit)

    经历了多次延期后,在3月16号,Qt发布了5.6.0版本(全面支持高DPI无疑是一个亮点),从5.6.0版本开始,Qt直接移除了webkit模块,让webengine作为其替代选择,不过webengi ...

  3. win10+VS2015+boost_1.60.0

    安装boost库的初衷boost库是一个C++'准'标准库,对于一个C++程序员来说,了解强大的boost库是很有必要的.当然,在学习使用这样一个强大的库之前,首先要学会安装.本文讲述了boost_1 ...

  4. Cocos2D-x-3.0 编译(Win7)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/logotostudent/article/details/25425969 第一次開始用手游引擎挺激 ...

  5. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    准备篇: CentOS 7.0系统安装配置图解教程 http://www.osyunwei.com/archives/7829.html 一.配置防火墙,开启80端口.3306端口 CentOS 7. ...

  6. centos 7.0 编译安装php 7.0.3

    php下载页面 http://cn2.php.net/downloads.php 7.0.3多地区下载页面 http://cn2.php.net/get/php-7.0.3.tar.gz/from/a ...

  7. Valgrind 3.11.0编译安装

    Valgrind 3.11.0编译安装 Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind遵守GNU通用公共许可证条款,是一款自由软件. 到3.3.0版本为 ...

  8. android5.0 编译

    android5.0编译需要jdk1.7版本,将来本地可能需要同时维护两套jdk版本,请参考: 在线安装openjdk1.7 sudo apt-get install openjdk-7-jre op ...

  9. VC6.0编译boost

    今天学习了下VC6.0下boost的编译,只是对regex进行了编译,据说全部编译需要2个多小时,在此记录下学习过程中遇到的问题以便今后查看. 最开始直接从网上(www.boost.org)下载了当前 ...

随机推荐

  1. centos7.2进入单用户模式修改密码

    1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Co ...

  2. 通过or注入py脚本

    代码思路 1.主要还是参考了别人的代码,确实自己写的和别人写的出路很大,主要归咎还是自己代码能力待提高吧. 2.将功能集合成一个函数,然后通过*args这个小技巧去调用.函数的参数不是argv的值,但 ...

  3. Python阶段复习 - part 3 - Python函数

    利用函数打印9*9乘法表 def cheng(num): for i in range(1,num+1): for j in range(1,i+1): print('{0} * {1} = {2}' ...

  4. 二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比

    转载:https://blog.csdn.net/z702143700/article/details/49079107 前言:BST.AVL.RBT.B-tree都是动态结构,查找时间基本都在O(l ...

  5. monkey测试===Android测试工具Monkey用法简介(转载)

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey ...

  6. Android SDK更新 Connection to http://dl-ssl.google.com refused

    问题: Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Conne ...

  7. signal, sigaction,信号集合操作

    信号是与一定的进程相联系的,而建立其信号和进程的对应关系,这就是信号的安装登记. Linux主要有两个函数实现信号的安装登记:signal和sigaction.其中signal在系统调用的基础上实现, ...

  8. [How to] 真机调试

    1.简介 真机调试介绍. 在xcode7之前需要每年99刀的代价才能活着开发者权限并能够在真机上调试,现在如果单纯的想在真机上调是就不必花这个钱了. 2.步骤 完毕.

  9. 初学jmeter

    jmeter安装的前提需要有jdk环境,下载安装好jdk环境后记得要设置好环境变量. 配置环境变量:右击“我的电脑”-->"高级"-->"环境变量" ...

  10. awk处理之案例六:awk根据条件插入文本

    编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...