VS2015编译使用Boost库遇到的问题及正确编译使用教程

目录

背景:

一、VS2015+Boost1.79.0时出现的问题情况

1、前言

2、问题发现

3、排查找原因

二、VS2015+Boost1.69.0正确编译使用

1、执行bat文件

2、运行exe文件,编译lib库

3、VS2015包含库使用


背景:

        本机电脑window10上已经安装过VS2010、VS2022后,由于之前想要研究boost库这方面的知识。就在官网上下载过1.79.0版本的boost库,并且编译并在VS2022上正确使用过。

        但由于boost可视化工具Graphical Debugging版本的限制,VS2022上无法安装可视化插件,一直没能继续创作。不过日前基于需要,在本机上又下载安装了VS2015。基于此就可以在vs2015上编译使用boost库了。

一、VS2015+Boost1.79.0时出现的问题情况

1、前言

        在已有VS2015软件和Boost1.79.0库的基础上,直接重新编译适合VS2015的boost库。直接双击b2.exe会直接索引vs2022环境生成14.3版本的lib库。

        一般来说直接包含boost的头文件就可以使用boost的基础功能,但是要使用到boost比较复杂的组件就需要加上lib库,我们用boost::geometry功能就需要对应的lib库了;一般在解压库包后顺便就编译一下lib库,避免后期使用到组件之后出现各种问题而不知所措。这里重新使用命令行编译生成14.0的库:

b2.exe install --toolset=msvc-14.0 --build-type=complete --prefix=D:\build link=static runtime-link=shared runtime-link=static threading=multi debug release

msvc-14.0指的是vs2015编译器,--prefix后面的路径是生成.h和.lib的存放路径

2、问题发现

        编译完boost静态库后,在vs2015上新建工程,并且引入boost库(boost库的调用步骤详见Windows下Boost库的安装与使用),然后写入测试案例,进行生成编译,却一直报如下的错误:

3、排查找原因

        首先我们知道“Boost.Geometry in Boost 1.73 deprecates support for the C++03 and will require C++14 from Boost 1.75 onwards”自Boost1.73后需要匹配C++14版本的编译平台了。

然后查看vs2015对应c++版本可参考:

vs不同版本支持的c++版本和PlatformToolset,及在vs中切换c++版本 - 知乎 (zhihu.com)

        发现C++14:vs2017就可以完全支持,vs2015基本支持,vs2013部分支持。

        虽说vs2015应该能够支持的,可不管怎么编译boost1.79库都是报以上错误。那么只能是boost库不兼容,需要降boost库版本了,下载1.73.0之前版本的boost库包均可。

二、VS2015+Boost1.69.0正确编译使用

        Boost1.69.0类似1.79版本的下载编译过程,这里简单介绍。

1、执行bat文件

        在官网老版本中下载boost1.69.0版本,解压,双击bootstrap.bat(或者,在cmd框中执行bat文件)执行过程中先出现‘Building Boost.Build engine’需要等待一小会执行完成就会生成b2.exe和bjam.exe。

注:cmd框最好在‘开始’打开‘VS2015 的 MSBuild 命令提示符’

2、运行exe文件,编译lib库

        在VS2015 的 MSBuild 命令提示符框下,转到解压文件夹路径下,然后执行以下命令进行编译:

bjam stage --toolset=msvc-14.0 architecture=x86 address-model=32 --without-graph --without-graph_parallel --stagedir="(生成的路径)" link=static runtime-link=shared runtime-link=static threading=multi debug release

编译过程需要半个小时左右吧,时间快慢由个人笔记本性能决定。

注:这里编译方式多样,但效果均可达到。例如:直接双击b2.exe会生成stage文件夹,里面就有lib文件夹;用上面命令行,注意‘(生成的路径)’换成自己需要的文件夹名;还可以将bjam换成b2也是可以的;b2 install …等等也ok。

3、VS2015包含库使用

        在vs2015上新建工程,并且引入boost库(boost库的调用步骤详见Windows下Boost库的安装与使用),然后写入测试案例,进行生成编译。

        再在 C/C++->常规->附加包含目录 中加上包含目录路径;在 链接器->常规->附加库目录 中加上库目录路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nanke_yh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值