编译 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. 破解邻居家的wifi密码

    刚刚学习了如何破解wifi密码 然后昨天晚上连续破解了两个 好激动 我是在ubuntu上面使用aircrack-ng套件进行破解的 首先进行抓包,然后跑字典就ok了 下面的不错 一.关闭网络和结束可能 ...

  2. 去掉每行的特定字符py脚本

    百度下载一个脚本的时候遇到那么一个情况.每行的开头多了一个空格.https://www.0dayhack.com/post-104.html 一个个删就不要说了,很烦.于是就有了下面这个脚本. #! ...

  3. linux系统下git使用

    转载:http://www.cnblogs.com/bear2flymoon/p/4335364.html?ADUIN=563508762&ADSESSION=1430887070&A ...

  4. Linux 入门记录:四、Linux 系统常用命令

    一.日期时间 命令 date 查看.设置当前系统时间: date -u 格林威治时间 date %Y-%m-%d 显示格式化的时间 date -s "23:00" 使用 -s 参数 ...

  5. angular数据绑定---js全局学习

    <!DOCTYPE html> <html ng-app> <head> <title>Simple app</title> </he ...

  6. VI编辑,backspace无法删除解决方法

    系统ubuntu 1,sudo apt-get install vim  安装vim 2, sudo vi  /etc/vim/vimrc.tiny 修改 set compatible为set noc ...

  7. yii2 一对多关系的对分页造成的影响

    下面代码中关联descies时,匹配较多,造成分页数不对,需要加条件限制: $model = User::find() ->joinWith('app') ->joinWith(['des ...

  8. 181. Employees Earning More Than Their Managers

    The Employee table holds all employees including their managers. Every employee has an Id, and there ...

  9. 使用kubeadm安装k8s集群故障处理三则

    最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...

  10. netbeans 开启调试

    在URL中加入一个参数 XDEBUG_SESSION_START=netbeans-xdebug