别的VS2017+PCL的安装配置教程都不用看了,踩坑无数总结出来的血泪经验都在这里了!!!

1. 下载环境

1.1 VS2017

百度搜索VS2017, 跳进MS官网下载,VS的安装就不用多说了。
VS2015之后的安装,都是通过下载器(Visual Studio Installer)进行,在下载到对应版本的installer之后,会让你选择安装内容,一般选择“使用C++的桌面开发”这一项就够。
在这里插入图片描述

1.2 PCL1.9.1

PCL的安装,其实也很简单,傻瓜式安装。(PCL的发行页)。选择其中的PCL1.9.1就行。
在这里插入图片描述

1.3 其他

关于Boost,最好是下载源码自己编译。(Boost源码下载页)
VS2017对应的Boost版本应该是1.68,因此下载boost源码的时候最好把1.68版本的下载下来。

2. 安装

2.1 VS的安装

这个没啥好说的,新手才不会。

2.2 PCL的安装

pcl-AllInOne.exe双击打开安装,一路安装下去。
安装完了之后,将一些PCL的库以及三方库添加进环境变量。需要添加环境变量的几个库如下图:
在这里插入图片描述
添加进环境变量之后,事情就开始变复杂了。往后看。

3. 几个重要的注意事项

3.1 Boost的编译

Boost的编译不是很难。

  1. 先将以下路径设置为环境变量:
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
    这个是boost在编译时要用到的 cl 命令所在的路径。
  2. 打开vs的命令行工具
    在这里插入图片描述
    将boost源码目录下的:
    在这里插入图片描述
    将bootstrp.bat文件拖动到命令行中,回车运行,会生成b2.exe和bjam.exe(1.68会生成后者,1.74貌似不会生成后者)。
  3. 在当前源码目录下打开命令行或者PowerShell,输入以下命令:
    b2 stage --toolset=msvc-14.0 architecture=x86 address-model=64 --stagedir=".\lib64\vc14_x64" link=static runtime-link=static threading=multi debug release
    命令中的==–stagedir=".\lib64\vc14_x64"==是生成的lib库的路径,会自动创建,因此可以自己指定。
  4. 步骤三完成后,就生成了自己所需版本的boost库,当运行测试程序提示无法打开libboost…mt-x64…lib之类的错误的时候,就看看是无法打开哪个版本的boost库,然后下载对应版本的boost库自己手动编译以下就行。

3.2 VS中配置项目属性

这一步它终于来了。

3.2.1 添加库目录和包含目录

  1. 添加包含目录
    在这里插入图片描述
    选择属性 - VC++目录
    包含目录下添加如下几项:
    在这里插入图片描述

  2. 添加库目录
    库目录添加如下几项:
    在这里插入图片描述

3.2.2 SDL检查设置为否

上面属性表中,选择**C/C++ - 所有选项 - SDL检查**,将其设置为否。

3.2.3 预处理器定义加上几句话

上面属性表中,选择C/C++ - 预处理器 - 预处理器定义,在当中加入如下几句:
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING
如下图:
在这里插入图片描述

3.2.4 附加依赖项设置

附加依赖项的设置有点复杂,因为要添加的东西太多了。几乎是把所有的lib库(与程序运行版本对应,debug对应debug的lib,release版本的对应release的lib)都添加进附加依赖项中。
如boost库中的release版本的lib,可通过如下方法来进行快速提取:

  1. 在boost路径下的lib文件夹下,新建 1.bat 文件,然后再当中加入如下代码:
    dir /b *mt-x64-1_68.lib>release.txt
    然后保存,双击该bat文件,就会在当前目录下生成 release.txt 文件,其中的内容就是boost的release版本的lib文件名。
  2. 项目属性表中,选择 链接器 - 输入 - 附加依赖项 ,把对应库中release.txt文件中的内容复制到附加依赖项中,然后保存,就行了。

4. 一段测试代码

以下贴出一段用于测试的代码。代码中的pcd文件可从我上传的资源文件中下载。

#include <pcl/visualization/pcl_visualizer.h>
#include <vector>

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

using namespace std;

int main(int argc, char* argv[])
{
    
    
	pcl::PointCloud<pcl::PointXYZ>::Ptr Cloud(new pcl::PointCloud<pcl::PointXYZ>);

	pcl::io::loadPCDFile("C:\\Users\\Administrator\\Desktop\\rabbit.pcd", *Cloud);//读入点云数据

	pcl::visualization::PCLVisualizer viewer("点云");
	viewer.setBackgroundColor(0, 0, 0);

	pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> fildColor(Cloud, "z");//按照z字段进行渲染
	viewer.addPointCloud<pcl::PointXYZ>(Cloud, fildColor, "sample");//显示点云,其中fildColor为颜色显示
	viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample");//设置点云大小

	while (!viewer.wasStopped())
	{
    
    
		viewer.spinOnce();
	}


	return 0;
}

程序运行效果如下图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/GeomasterYi/article/details/108353407