VS2017下载与安装
可以参考:
https://blog.csdn.net/weixin_41991128/article/details/83656543
https://blog.csdn.net/qq_33528803/article/details/97399915
本文在第二篇博客基础上,增加了报错修改,并对原文中最后一步版本设置会导致的问题进行修复。PCL1.9.1下载与安装
1.下载
github有直接下载PCL1.9.1版本
链接: https://github.com/PointCloudLibrary/pcl/releases.
根据自己的编译器环境选择下载win64或者winX32的版本,例如博主下载的VS2017win64版本:下载
PCL-1.9.1-AllInOne-msvc2017-win64.exe
pcl-1.9.1-pdb-msvc2017-win64.zip
两个文件。
2.安装
安装步骤很简单,点击“PCL-1.9.1-AllInOne-msvc2017-win64.exe”进行安装:
这里建议选第二个:“Add PCL to the system PATH for all users”,它可以自动添加系统路径(不过我的失败了,说是什么路径名字太长)。
然后选择安装的文件夹,以及选择生成快捷方式。
这里选择第三方库,除非你清楚地知道自己需要什么库不需要什么库,不然就都选上。
安装到快结束的时候会弹出安装OpenNI的提示,建议安装到你自定义的第三方库的目录下(不是硬性要求安装目录,这样只是方便之后配置环境方便。在PCL 1.9.1\3rdParty下新建一个文件夹OpenNI2,安装到这个里面就行。如果安装失败或者直接装到了3rdParty,可安装完成后使用文件夹中的OpenNI-Windows-x64-2.2.msi重装);
解压“pcl-1.9.0-pdb-msvc2017-win64.zip”,将解压得到的文件夹中的内容添加到你的PCL安装目录==…\PCL 1.9.0\bin==中。
PCL的安装结束。
下面开始进行VS2017配置PCL1.9.1
1.系统环境变量
计算机—>属性—>高级系统属性—>高级—>环境变量
找到path,双击。
添加红框里面的8个,找到你自己刚刚安装的目录,然后添加你自己对应的目录。
这一步完成之后需要将电脑注销一下才能生效(不用重启)
2.配置相关目录
打开VS2017新建一个空项目。
输入名字,选择生成文件夹,然后选择“空项目”,直接确定就可以了。
首先确保编译环境是X64,我这里选择的是Release版本。
这里在对应的属性管理器—>Release|X64中添加新的属性表“PCL1.9.1X64r”(名字取得自己看得懂就行,属性管理器窗口可通过“视图-->其他窗口-->属性管理器”打开)。
通用属性—>VC++目录—>包含目录中添加7个目录:
C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Include
C:\Program Files\PCL 1.9.1\3rdParty\VTK\include\vtk-8.1
C:\Program Files\PCL 1.9.1\3rdParty\Qhull\include
C:\Program Files\PCL 1.9.1\3rdParty\FLANN\include
C:\Program Files\PCL 1.9.1\3rdParty\Eigen\eigen3
C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68
C:\Program Files\PCL 1.9.1\include\pcl-1.9
然后是添加lib目录,在通用属性—>VC++目录—>库目录中添加如下6个目录
C:\Program Files\PCL 1.9.1\3rdParty\VTK\lib
C:\Program Files\PCL 1.9.1\3rdParty\Qhull\lib
C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Lib
C:\Program Files\PCL 1.9.1\3rdParty\FLANN\lib
C:\Program Files\PCL 1.9.1\3rdParty\Boost\lib
C:\Program Files\PCL 1.9.1\lib
在C/C++—>预处理器—>预处理器定义中添加:
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING
将C/C++—>所有选项—>SDL检查改为否。
最后,也是最麻烦的一个:在通用属性—>链接器—>输入—>附加的依赖项中添加对应的.“lib”文件,主要是添加PCL的“.lib”文件和第三方库中VTK的“.lib”文件。
注意VTK的版本,在你的路径:…PCL1.9.1\PCL 1.9.1\3rdParty\VTK\lib 中查看自己VTK的版本。
Release版本:注意VTK的版本
pcl_common_release.lib
pcl_features_release.lib
pcl_filters_release.lib
pcl_io_release.lib
pcl_io_ply_release.lib
pcl_kdtree_release.lib
pcl_keypoints_release.lib
pcl_ml_release.lib
pcl_octree_release.lib
pcl_outofcore_release.lib
pcl_people_release.lib
pcl_recognition_release.lib
pcl_registration_release.lib
pcl_sample_consensus_release.lib
pcl_search_release.lib
pcl_segmentation_release.lib
pcl_stereo_release.lib
pcl_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib
vtkalglib-8.1.lib
vtkChartsCore-8.1.lib
vtkCommonColor-8.1.lib
vtkCommonComputationalGeometry-8.1.lib
vtkCommonCore-8.1.lib
vtkCommonDataModel-8.1.lib
vtkCommonExecutionModel-8.1.lib
vtkCommonMath-8.1.lib
vtkCommonMisc-8.1.lib
vtkCommonSystem-8.1.lib
vtkCommonTransforms-8.1.lib
vtkDICOMParser-8.1.lib
vtkDomainsChemistry-8.1.lib
vtkexoIIc-8.1.lib
vtkexpat-8.1.lib
vtkFiltersAMR-8.1.lib
vtkFiltersCore-8.1.lib
vtkFiltersExtraction-8.1.lib
vtkFiltersFlowPaths-8.1.lib
vtkFiltersGeneral-8.1.lib
vtkFiltersGeneric-8.1.lib
vtkFiltersGeometry-8.1.lib
vtkFiltersHybrid-8.1.lib
vtkFiltersHyperTree-8.1.lib
vtkFiltersImaging-8.1.lib
vtkFiltersModeling-8.1.lib
vtkFiltersParallel-8.1.lib
vtkFiltersParallelImaging-8.1.lib
vtkFiltersPoints-8.1.lib
vtkFiltersProgrammable-8.1.lib
vtkFiltersSelection-8.1.lib
vtkFiltersSMP-8.1.lib
vtkFiltersSources-8.1.lib
vtkFiltersStatistics-8.1.lib
vtkFiltersTexture-8.1.lib
vtkFiltersTopology-8.1.lib
vtkFiltersVerdict-8.1.lib
vtkfreetype-8.1.lib
vtkGeovisCore-8.1.lib
vtkgl2ps-8.1.lib
vtkhdf5-8.1.lib
vtkhdf5_hl-8.1.lib
vtkImagingColor-8.1.lib
vtkImagingCore-8.1.lib
vtkImagingFourier-8.1.lib
vtkImagingGeneral-8.1.lib
vtkImagingHybrid-8.1.lib
vtkImagingMath-8.1.lib
vtkImagingMorphological-8.1.lib
vtkImagingSources-8.1.lib
vtkImagingStatistics-8.1.lib
vtkImagingStencil-8.1.lib
vtkInfovisCore-8.1.lib
vtkInfovisLayout-8.1.lib
vtkInteractionImage-8.1.lib
vtkInteractionStyle-8.1.lib
vtkInteractionWidgets-8.1.lib
vtkIOAMR-8.1.lib
vtkIOCore-8.1.lib
vtkIOEnSight-8.1.lib
vtkIOExodus-8.1.lib
vtkIOExport-8.1.lib
vtkIOExportOpenGL-8.1.lib
vtkIOGeometry-8.1.lib
vtkIOImage-8.1.lib
vtkIOImport-8.1.lib
vtkIOInfovis-8.1.lib
vtkIOLegacy-8.1.lib
vtkIOLSDyna-8.1.lib
vtkIOMINC-8.1.lib
vtkIOMovie-8.1.lib
vtkIONetCDF-8.1.lib
vtkIOParallel-8.1.lib
vtkIOParallelXML-8.1.lib
vtkIOPLY-8.1.lib
vtkIOSQL-8.1.lib
vtkIOTecplotTable-8.1.lib
vtkIOVideo-8.1.lib
vtkIOXML-8.1.lib
vtkIOXMLParser-8.1.lib
vtkjpeg-8.1.lib
vtkjsoncpp-8.1.lib
vtklibharu-8.1.lib
vtklibxml2-8.1.lib
vtklz4-8.1.lib
vtkmetaio-8.1.lib
vtkNetCDF-8.1.lib
vtknetcdfcpp-8.1.lib
vtkoggtheora-8.1.lib
vtkParallelCore-8.1.lib
vtkpng-8.1.lib
vtkproj4-8.1.lib
vtkRenderingAnnotation-8.1.lib
vtkRenderingContext2D-8.1.lib
vtkRenderingContextOpenGL-8.1.lib
vtkRenderingCore-8.1.lib
vtkRenderingFreeType-8.1.lib
vtkRenderingGL2PS-8.1.lib
vtkRenderingImage-8.1.lib
vtkRenderingLabel-8.1.lib
vtkRenderingLIC-8.1.lib
vtkRenderingLOD-8.1.lib
vtkRenderingOpenGL-8.1.lib
vtkRenderingVolume-8.1.lib
vtkRenderingVolumeOpenGL-8.1.lib
vtksqlite-8.1.lib
vtksys-8.1.lib
vtktiff-8.1.lib
vtkverdict-8.1.lib
vtkViewsContext2D-8.1.lib
vtkViewsCore-8.1.lib
vtkViewsInfovis-8.1.lib
vtkzlib-8.1.lib
3.测试安装是否成功
rabbit.pcd文件:链接:https://pan.baidu.com/s/1T2ZZqBDD7kyzLvug6gBVHA 密码:dl9n
下载之后将点云文件拷贝到项目文件夹#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 user_data;
using std::cout;
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
viewer.setBackgroundColor(1.0, 0.5, 1.0); //设置背景颜色
}
int main() {
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
char strfilepath[256] = "rabbit.pcd";
if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
cout << "error input!" << endl;
return -1;
}
cout << cloud->points.size() << endl;
pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
system("pause");
return 0;
}
效果图:
4.可能出现的错误
error C4996:右键项目–>属性(注意不是刚刚新建的那个属性表PCL1.9.1X64r)–>C/C++ 将SDL检查设置为 否。参考:https://blog.csdn.net/oMoDao1/article/details/89210158
error C2116和C2733:参考:https://blog.csdn.net/qq_41017802/article/details/103482535
error LNK2038:release和debug版本设置有问题,注意lib那一步的引入。参考:https://www.cnblogs.com/lisuyun/p/6410393.html
vtk无法解析的外部符号:重新引入lib。参考:https://blog.csdn.net/qinlele1994/article/details/91794927