在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编码的 当然在使用的时候要对 ...
随机推荐
- 新装NGINX重启,出现错误 nginx: [error] open() "/usr/local/nginx/logs/nginx.pid"
重装nginx出现,重启出现错误 ./nginx -s reload nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" ...
- WebUploader压缩图片上传
WebUploader,由Baidu FEX 团队开发,以H5为主,FLASH为辅,兼容 IE6+,iOS 6+, android 4+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档 ...
- python爬取豆瓣top250的电影数据并存入excle
爬取网址: https://movie.douban.com/top250 一:爬取思路(新手可以看一下) : 1:定义两个函数,一个get_page函数爬取数据,一个save函数保存数据,mian中 ...
- MySQL的增、删、查、改操作命令
MySQL的增.删.查.改操作命令: 一.修改mysql数据库密码 格式:mysqladmin -u用户名 -p旧密码 password 新密码. 二.查看 查看多少个数据库:注意 后面带s #查看 ...
- 自定义View/ViewGroup的步骤和实现
1.设置属性(供XML调用) 在res目录新建attrs.xml文件 <?xml version="1.0" encoding="utf-8"?> ...
- export、export default、module.export区别
在es6里面定义模块,导出模块时可以使用export.export default 这2者区别: 在同一个文件里面可以有多个export, 一个文件里面只能有1个export default //a. ...
- fastjosn在低版本丢字段问题
简单的说: 对于java bean中有字段类似pId这种写法,特征是第一个字母小写,第二个字母大写,在eclipse中生成的getter setter方法是 getpId, setpId. 在低版本的 ...
- 基于web自动化测试框架的设计与开发(讲解演示PPT)
- 菜鸟之路——机器学习之线性回归个人理解及Python实现
这一节很简单,都是高中讲过的东西 简单线性回归:y=b0+b1x+ε.b1=(Σ(xi-x–)(yi-y–))/Σ(xi-x–)ˆ2 b0=y--b1x- 其中ε取 为均值为0的正态 ...
- 在控制器“xxxx”上找不到与该请求匹配的操作
Message:"找不到与请求 URI"http://localhost:8091/Api/CommonApi/SelectBind/GetBudCategoryListByCID ...