在VS2013中使用boost库遇到的问题及解决(转)
原文转自 https://my.oschina.net/SunLightJuly/blog/676891?p=1
最近的项目需要集成一个使用了boost库的开源库。原本应该是比较简单的工作,因为使用的是VS2013,而boost库是最新下载的1.60.0版本(注:写这篇文章时1.61.0刚好release),结果还是费了一点工夫。现在把它记下来,给自己留个记录备查吧。
经过这么久的发展,boost库其实用起来已经很简单了。首先下载新版本的包。在windows下,用zip格式的包是最方便的。然后随便解压到一个目录下,我是解压到了D盘,完成后boost库就放在D:\boost_1_60_0目录下了。
接下来就可以编译boost库了。在命令行下进入D:\boost_1_60_0,运行bootstrap.bat进行配置。配置完成后,显示的提示是运行刚生成的b2.exe即可进行编译。网上一些旧的教程说的是运行bjam.exe,这也是可以的,因为这两个文件其实完全一样,boost可能是为了兼容以前的使用习惯,生成exe后改名复制了一份。
编译的时间较长,但只要之前VS已经正常安装和使用,总会编译完成的。结束后,提示如下:
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
D:\boost_1_60_0
The following directory should be added to linker library paths:
D:\boost_1_60_0\stage\lib
这两个目录就是头文件包含目录和库文件查找目录了,把它们加到自己的VS工程的相应配置项里,就可以使用boost库了。
到目前为止似乎一切正常,但一启动工程的编译,立刻有大量报错出现,而且全部是boost的头文件报错。怎么回事,难道boost有问题?仔细检查报错信息,看起来和新的C++规范的支持有关。搜索一些资料了解了一下,基本上确定是因为最新的boost库使用了C++14规范,而VS2013要在update5之后才支持C++14,所以出错了。难怪boost编译过程中出现了大量的error,虽然最后还是编译完了,但还是提示有部分项目是fail和skip了的。
那么如何解决呢?因为VS2013的update5有6G这么大,一开始实在不想下载,所以考虑能否换用旧一些版本的boost。经过一些尝试,最后放弃了这一方案,因为比较新的boost已经用了新规范了,而太旧的boost又没有工程需要的功能。所以还是老老实实的下载update5吧,微软官网上好象已经没有连接了,好在找到了https://go.microsoft.com/fwlink/?LinkId=519391这个连接,仍然可以下载,而且速度还不错。
下载完成,安装升级VS2013到update5,重新编译boost,这次没有error了,虽然还是有warning,但是不影响。
接下来打开工程编译,果然没有编译错误了!一路顺利到链接阶段,又报了个错误:找不到libboost_system-vc120-mt-sgd-1_60.lib这个库。检查了boost的库文件目录,确实没有这个库,但有一个libboost_system-vc120-mt-gd-1_60.lib。这是什么情况呢?
查了一下这两个库的情况,知道带s的库是用在静态库连接的工程中(命令行参数为/MT和/MTd),不带s的用在动态库工程中(/MD和/MDd)。有一种方案是提议改用/MD参数,这也太将就了吧......
其实彻底解决这个问题并不难,用“--build-type=complete”再完全编译一次boost就可以了,这个参数是要求boost生成所有的项目,而之前不加参数默认是最小生成模式。
在VS2013中使用boost库遇到的问题及解决(转)的更多相关文章
- 如何在VS2013中进行Boost单元测试
对于如何在VS2013中进行Boost单元测试,这方面资料太少.自己也因此走了不少弯路.下文将会阐述一下如何在VS2013中进行Boost单元测试. 在开始Boost单元测试之前,我们需要先安装VS2 ...
- 在VS2013下配置BOOST库
1.安装Boost库 (1).首先打开Boost的官网(http://www.boost.org/),找到下载位置,如下图中红框所示,此时最新的版本是1.64.0: (2).点击进入下载页面,选择你需 ...
- 在Visual Sutdio 2017中使用boost库
在Visual Sutdio 2017中使用boost库 转载 https://blog.csdn.net/u011054333/article/details/78648294 对C++有一 ...
- 在RedHat 7.2中安装boost库
在RedHat 7.2中安装boost库 环境,其它版本类似 Redhat7.2 64bit boost 1.64.0 步骤 去 boost官网 下载想要版本的.tar.gz,如下图 解压tar -v ...
- VS2013环境下Boost库配置
序言 最近了解各大互联网公司的校招要求,发现了解Boost程序库也是不可或缺的一部分~ 于是,决定潜心研究下,这个准标准库~ 首先,在官网下载boost的最新版本Boost 1.59.0,这是当前的最 ...
- VS2012中使用Boost库的方法(超级简单)
很不错的博客一定得看 http://my.csdn.net/caimouse 1.下载boost库 从http://www.boost.org上下载到目前最新的boost库,快速传送门:boost_1 ...
- Qt中使用Boost库
关于boost库的编译,请看https://www.cnblogs.com/HackerArt/p/10539516.html 网上可以查到很多介绍qt使用库文件的教程,但是大多都没有注意到,qt中支 ...
- 在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)
最近使用Boost库做多线程开发,可视在vs中编译工程师总是遇到Macro redefinition错误,类似下面的错误描述 1>c:\program files (x86)\microsoft ...
- VS2013 中使用 CxImage 库时用Unicode编码时出现链接错误
CxImage 本身是支持Unicode 编码的,编译CxImage库的时候选择编译Unicode就可以了,得到的lib文件和dll文件很容易看出有个u的就是Unicode编码的 当然在使用的时候要对 ...
随机推荐
- 水平垂直居中图片及文字(兼容IE6+)实例
直接看代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <me ...
- 阻止touchslider事件冒泡,防止左右滑动时出发全局滑动事件
最近适用mui开发一个项目,全局有个侧滑菜单offCanvasSideScroll,首页用了一个touchslider插件来实现行的左右滚动 touchslider的当滚动方向与侧滑菜单滚动方向一致时 ...
- nginx+django线上部署
(一):背景在线 由于现在工作的需要,我需要使用Python来进行一个网站后台的开发,python之前接触过其语法的学习,基本的东西已经掌握,但是当时自学的时候是学得python3.5,而现在要使用p ...
- Python9-IO模型-day41
# 进程:启动多个进程,进程之间是由操作系统负责调用# 线程:启动多个线程,真正由被cpu执行的最小单位实际是线程# 开启一个线程,创建一个线程,寄存器.堆栈# 关闭一个线程# 协程# 本质上是一个线 ...
- The Moving Points - HDU - 4717 (模拟退火)
题意 二维空间中有\(n\)个运动的点,每个点有一个初始坐标和速度向量.求出一个时间\(T\),使得此时任意两点之间的最大距离最小.输出\(T\)和最大距离. 题解 模拟退火. 这个题告诉了我,初始步 ...
- 笔记-python-内存管理
笔记-python-内存管理 1. 内存使用 1.1. 对象的内存使用 a = 1 1是一个对象,a是引用,指向1. >>> id(a) 1951821280 这个数 ...
- 【Todo】 cygwin下emacs中M-x shell 中出现乱码
- MySQL安装教程&Navicat安装
一.下载MySQL http://jingyan.baidu.com/article/e3c78d64412ae83c4c85f5fd.html 首先打开MySQL官网,找到Downloads标签,点 ...
- Less Css 教程
http://www.w3cplus.com/css/less,这个东西太吊了!
- [oldboy-django][6其他]微信二维码扫码登录注册
http://blog.csdn.net/maerdym/article/details/46380309 http://blog.csdn.net/jiang1013nan/article/deta ...