visual studio 2019配置pcl1.9.0并测试

visual studio 2019配置pcl1.9.0
github上有vs2019对应的pcl1.10,但是,配置后,总是有内存错误的问题导致无法读取点云文件。因此,尝试在vs2019中配置pcl1.9. 实践表明,PCL-1.9.0-AllInOne-msvc2017-win64.exe中,PCL版本与VS的版本没有特别严格的对应关系。

1、pcl下载
github上有可供直接下载的PCL1.9.0版本,安全可靠。链接如下:
链接: https://github.com/PointCloudLibrary/pcl/releases.
根据自己的编译器环境选择下载win64或者winX32的版本,例如博主下载的VS2017win64版本:下载
PCL-1.9.0-AllInOne-msvc2017-win64.exe
PCL-1.9.0-pdb-msvc2017-win64.zip
两个文件。

2、安装pcl
运行PCL-1.9.0-AllInOne-msvc2017-win64.exe,傻瓜式安装即可。
选择Add PCL to the system PATH for all users,选择自己的安装路径或者默认安装路径都可以。
在这里插入图片描述

安装到快结束的时候会弹出安装OpenNI的提示,建议安装到你自定义的第三方库的目录下(不是硬性要求安装目录,这样只是方便之后配置环境方便)

解压“pcl-1.9.0-pdb-msvc2017-win64.zip”,将解压得到的文件夹中的内容添加到你的PCL安装目录**/PCL 1.9.0/bin中。

至此,安装完成

3、添加环境变量
在系统变量PATH中,添加PCL以及第三方包的bin的路径,共六个(E:\PCL 1.9.0开头的六个路径名)。根据自己的安装路径。如下图:
在这里插入图片描述
注销后生效。

4、visual studio2019中配置PCL配置表
新建工程,在视图-其他窗口-属性配置表中,右键Debug|X64,添加新的属性配置表,输入PCL,添加新的属性配置表PCL,双击PCL,进入PCL属性配置界面。
在VC++ 目录,包含目录下,添加以下几个包含目录
在这里插入图片描述
同样的,在库目录中,添加以下库目录路径。
在这里插入图片描述
在C/C++—>预处理器—>预处理器定义中添加如下:
在这里插入图片描述
将C/C++—>所有选项—>SDL检查改为否。
在这里插入图片描述
最后,也是最麻烦的一个:在通用属性—>链接器—>输入—>附加的依赖项中添加对应的.“lib”文件,主要是添加PCL的“.lib”文件和第三方库中VTK的“.lib”文件。这里给出一个快速获取所有静态链接库文件名的方法,方法也附在文章末尾。
在这里插入图片描述

4、测试代码
测试代码如下:
实现读入一个.pcd文件,并显示出来,该文件存放在工程目录下。

// pcl_test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include<pcl/visualization/cloud_viewer.h>
#include<iostream>//标准C++库中的输入输出类相关头文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支持的点类型头文件。

int main()
{
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new 	pcl::PointCloud<pcl::PointXYZ>);
	char strfilepath[256] = "rabbit_t.pcd";
	if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) //打开点云文件
	{
		std::cout << "error input!" << std::endl;
		return -1;
	}
	std::cout << cloud->points.size() << std::endl;
	pcl::visualization::CloudViewer viewer("Cloud Viewer");     //创建viewer对象
	viewer.showCloud(cloud);
	system("pause");
	return 0;
}

在这里插入代码片

显示效果如下:
在这里插入图片描述

5、快速获取所有静态链接库文件名的方法
win+r调出“运行”窗口并输出cmd
输入:cd /d D:\P_pcl\PCL1.9.0\PCL 1.9.0\3rdParty\VTK\lib 回车 (进入相应的路径)
输入:dir /b *.lib *>0.txt 回车(生成0.txt,里面包含了当前目录下所有.lib的文件名)

6、可能遇到的报错
6.1 LINK : fatal error LNK1104: 无法打开文件“cmake.obj”
解决办法:
检查 通用属性—>链接器—>输入—>附加的依赖项中添加对应的.“lib”文件是否都是.lib文件,当添加了错误的文件名是会出现该错误
6.2 找不到包含文件
解决办法:
检查头文件包含目录,确保路径正确。
这在添加包含文件时要注意,添加的路径到*/include/path,那么c++源文件中,include的相对路径必须是path的下一级子目录。

6.3 C4996 ‘vtkMapper::ImmediateModeRenderingOff’: 被声明为已否决
解决办法:
首先是将C/C++—>所有选项—>SDL检查改为否。
如果根据上面设置之后,编译还会有同样的错误,可以直接注释发生错误的地方。 经过一番搜索之后,发现是因为vtk8.10之后的版本中将vtkMapper的ImmediateModeRenderingOff()方法移除了,所以为了让pcl1.9.1代码编译通过,只需要将错误提示中对应的那一行代码注释掉即可,或者更换为更低版本的vtk也行。我是通过注释掉上述出错的两行代码,因为ImmediateModeRenderingOff()方法不是必须的操作,最后通过了编译。
6.4 C2039 “PCLPointField”: 不是 “pcl” 的成员 pcl_test
很神奇,在C/C++—>预处理器—>预处理器定义中添加:NOMINMACX后,很多个类似的C2039的错误都消失了。
6.5 C3861 “pop_t”: 找不到标识符,
解决办法:
在这里插入图片描述
6.6 error LNK2019: 无法解析的外部符号
解决办法:
查看错误信息,都是找不到flann中的一些库文件,因此定位为配置文件中未添加相关的库目录。检查库目录是否添加flann的库,其次检查附加目录库是否添加flann中lib目录下的*.lib文件。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读