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

简介: 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库的安装与使用),然后写入测试案例,进行生成编译,却一直报如下的错误:

1.png


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。

1.png

注: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库的安装与使用),然后写入测试案例,进行生成编译。

1.png

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

1.png

目录
相关文章
|
6月前
|
编译器 Linux C语言
gcc编译器的使用方法
gcc编译器的使用方法
82 1
|
Linux 编译器 开发工具
【Linux环境基础开发工具】编译器-gcc/g++
【Linux环境基础开发工具】编译器-gcc/g++
100 0
|
并行计算 计算机视觉
【CUDA学习笔记】第八篇:源码编译OpenCV+CUDA模块(完整源码打包一次成功编译)(一)
【CUDA学习笔记】第八篇:源码编译OpenCV+CUDA模块(完整源码打包一次成功编译)(一)
292 0
|
并行计算 C++ 异构计算
【CUDA学习笔记】第八篇:源码编译OpenCV+CUDA模块(完整源码打包一次成功编译)(二)
【CUDA学习笔记】第八篇:源码编译OpenCV+CUDA模块(完整源码打包一次成功编译)(二)
190 0
|
自然语言处理 编译器 Linux
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(二)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
568 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(二)
|
存储 Ubuntu Unix
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(一)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
357 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(一)
|
NoSQL 编译器 Linux
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(三)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
307 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(三)
|
Linux vr&ar C语言
Linux环境编译静态库
Linux环境编译静态库
143 0
jsweet下载编译
jsweet下载编译
66 0
|
C++
inttypes.h源码,VS编译需要
inttypes.h源码,VS编译需要
155 0