在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参数,这也太将就了吧......

其实彻底解决这个问题并不难,用“b2 --build-type=complete”再完全编译一次boost就可以了,这个参数是要求boost生成所有的项目,而之前不加参数默认是最小生成模式。

时间: 2024-12-15 02:00:26

在VS2013中使用boost库遇到的问题及解决(转)的相关文章

在VS2013下配置BOOST库

1.安装Boost库 (1).首先打开Boost的官网(http://www.boost.org/),找到下载位置,如下图中红框所示,此时最新的版本是1.64.0: (2).点击进入下载页面,选择你需要的文件下载,这里我选择windows下的zip文件: (3).下载好后,解压,得到文件目录如下图,找到其中的bootstrap.bat文件: (4).双击运行bootstrap.bat后,让其自动运行完成后,会发现当前文件夹中增加了几个文件,找到其中的bjam.exe,如下图所示 (5).双击运行

如何在VS2013中进行Boost单元测试

对于如何在VS2013中进行Boost单元测试,这方面资料太少.自己也因此走了不少弯路.下文将会阐述一下如何在VS2013中进行Boost单元测试. 在开始Boost单元测试之前,我们需要先安装VS2013插件Boost Unit Test Adapter (Update 3) 以及编译Boost库.Boost Unit Test Adapte可以在VS2013中的“工具->扩展与更新”中找到并安装.对于Boost Unit Test Adapter所支持的Boost库版本请参考网页.我选择的是

在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

VS2013 中使用 CxImage 库时用Unicode编码时出现链接错误

CxImage 本身是支持Unicode 编码的,编译CxImage库的时候选择编译Unicode就可以了,得到的lib文件和dll文件很容易看出有个u的就是Unicode编码的 当然在使用的时候要对应项目该使用哪种库,为了方便,在使用动态库时,我选择全部导入 Debug Unicode_Debug  Release Unicode_Release四种lib #pragma comment(lib,"cximage.lib") #pragma comment(lib,"cxi

linux 下安装boost 库

a. 在 www.boost.org 下载 boost_1_59_0 源码包,解压缩. b. 进入目录后,运行 ./bootstrap.sh ,会生成一个 bjam 的可执行程序. c. 运行 ./bjam 进行编译.等待... d. 编译成功后,在 bjam 同级文件夹下,会有 stage.bin.v2 两个目录.bin.v2 中存的是编译时生成的目标文件,stage 中放的是 boost 的库文件. e. 新建目录  /usr/share/boost_1_59_0/ .把 stage.boo

VS2010 编译安装boost库

实践是最好的办法..学习C++,想试试线程,然后打算用boost库,结果boost库编译差点吓到我..没看到比较完整的安装教程..一直耽搁.今天动手.完成了.方法记录如下:1.下载boost从boost官网( http://www.boost.org )上下载最新的boost版本,现在最新是1.49版本,解压到自定义目录(我解压到了D:/program files,最终的目录结构是D:\Program Files\boost_1_49_0) 2.编译安装 在D:\Program Files\bo

C++ boost库无锁队列多线程并行测试与编译方法

阅读了网络中关于Boost库无锁队列的源代码,但却缺少编译方法.经过测试,确定了ubuntu 14.04中编译boost库的方法,特做记录. 无锁(free-lock)是实现高性能多线程并发编程的重要技术. 作为C++11 STL参考实现的boost库,不仅支持11标准,而且做了许多扩展,掌握其使用方法,对于提高代码质量,尤其重要. 以其多线程并行无锁队列为例,结合代码和说明,演示了无锁boost库的使用和编译方法. 代码及说明如下: //source: boost_queue.cpp //目的

(八)boost库之异常处理

(八)boost库之异常处理 当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名.行号等信息输出,该多好啊,曾经为此绞尽脑汁. 今天使用boost库,将轻松的解决这个问题. 1.boost异常的基本用法 先看看使用STL中的异常类的一般做法: // 使用STL定义自己的异常 class MyException : public std::exception { public: MyException(const char * const &msg):excepti

VS2010下安装boost库

在我们的C++项目中安装boost库,下面以VS2010版本作为例子,其它版本的设置也差不多. 一.编译生成boost库 1.下载最新的boost(本人下载的是boost_1_56_0).boost官方网站(www.boost.org). 2.解压boost库文件(我解压到C:boost目录下). 3.打开VS2010->VS TOOLS->VS命令提示. 4.进入解压的boost目录(此处是CD C:\boost\boost_1_56_0 ). 5.输入bootstrap,回车. 6.输入b