PCL -1.12.1下载及vs2019环境配置
安装
1、下载PCL的安装包和pdb文件,即PCL-1.12.1-AllInOne-msvc2019-win64.exe和pcl-1.12.1-pdb-msvc2019-win64.zip,两个文件要与VS版本匹配;
2、环境配置:
a、我安装在了D:\PCL 1.12.1中,后续所有操作都基于此;
b、安装时注意将PCL添加到系统环境变量
c、安装结束后右键此电脑->属性->高级系统设置->环境变量,查看x下面四个环境变量是否已经建立
3、将.zip中的所有.pdb文件复制到安装路径的bin文件夹。
4、添加环境变量,包括如下路径,其中D:\PCL 1.12.1替换为自己的安装路径
D:\PCL 1.12.1\bin D:\PCL 1.12.1\3rdParty\VTK\bin D:\PCL 1.12.1\3rdParty\FLANN\bin D:\PCL 1.12.1\3rdParty\Qhull\bin D:\PCL 1.12.1\3rdParty\Boost\lib D:\PCL 1.12.1\3rdParty\OpenNI2\Tools D:\PCL 1.12.1\3rdParty\OpenNI2\Redist
配置VS
1、打开VS,新建空项目(C++),编译环境为Debug,x64,添加源文件src.cpp。
2、配置VC++目录:右键解决方案名称->属性->VC++目录,编辑其中的包含目录和库目录。
其中包含目录添加:
D:\PCL 1.12.1\include\pcl-1.12 D:\PCL 1.12.1\3rdParty\Eigen\eigen3 D:\PCL 1.12.1\OpenNI2\Include D:\PCL 1.12.1\3rdParty\VTK\include\vtk-9.1 D:\PCL 1.12.1\3rdParty\Qhull\include D:\PCL 1.12.1\3rdParty\FLANN\include D:\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
库目录 中添加以下6个目录:
D:\PCL 1.12.1\PCL\lib D:\PCL 1.12.1\3rdParty\OpenNI2\Lib D:\PCL 1.12.1\3rdParty\VTK\lib D:\PCL 1.12.1\3rdParty\Qhull\lib D:\PCL 1.12.1\3rdParty\FLANN\lib D:\PCL 1.12.1\3rdParty\Boost\lib
3、C/C++设置:仍在属性页面,C/C++
->预处理器->预处理器定义,将其改为
BOOST_USE_WINDOWS_H
NOMINMAX
_CRT_SECURE_NO_DEPRECATE
同样在C/C++
选项卡中->所有选项->SDL检查,选择为否。
4 设置附加依赖项:链接器->输入->附加依赖项
将PCL安装路径\lib
文件夹和\3rdParty\VTK\lib
中所有的.lib
文件填入其中,这个实在太费劲了,可以进入命令行,可用dir
命令快速选出以d.lib
为后缀的文件
D:\PCL 1.12.1\lib>dir /b *d.lib pcl_commond.lib //...内容太多 D:\PCL 1.12.1\3rdParty\VTK\lib>dir /b *d.lib vtkcgns-9.1d.lib vtkChartsCore-9.1d.lib vtkCommonColor-9.1d.lib //...
以d.lib
结尾,表示debug
模式下的附加依赖项,不以d
结尾的是release
模式的
然后复制粘贴到附加依赖项
中。
测试:
#include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/visualization/cloud_viewer.h> void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(0.5, 0.9, 0.5); //设置背景颜色 } int main() { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); char strfilepath[256] = "rabbit.pcd"; pcl::io::loadPCDFile(strfilepath, *cloud); pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象 viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); system("pause"); return 0; }