64位系统配置PCL 1.8.0+VS2013


感谢PCL-1.8.0-AllInOne VS2013 Win8 X64 安装配置及部分问题解决方法的文章,本文在其基础上稍作调整,希望可以帮到PCL用户和爱好者!(经过测试,新版的PCL缺少一些类,如:sensor_msgs,导致PointCloud2不能用,因此,如果低版本可以满足工作需要就不要用最新版了!!!)

Win7/win10 x64

Visual Studio 2013 (注意:VS2013安装包不区分64位和32位,所用位数都是在平台下自己设置)

我的百度网盘安装包:

PCL-1.8.0-msvc2013-64/32位链接:https://pan.baidu.com/s/1E5e4rTEfab4AVhB0iBvqTA 密码:v7o6

VS2013链接:https://pan.baidu.com/s/1Ewaa2nuTYXNyW0XPMkQihQ 密码:hvas

一.准备工作

 首先需要下载PCL-1.8.0-AllInOne安装包文件和相应的pdb文件

属性表可以不用下载,路径不同的情况下不能直接用,建议跟着教程自己新建属性表

 二.安装

1.PCL库安装

双击安装包,安装的时候注意选上“Add PCL to the system PATH for allusers”,这样安装程序会自动在系统环境变量中添加“PCL_ROOT”、“OPENNI2_INCLUDE64”、“OPENNI2_LIB64”、“OPENNI2_REDIST64”四个项。

注意:若安装结束后提示“路径过长无法添加环境变量”,这并不影响;如果安装结束后没有自动在系统环境变量中增加以上四项,则手动加上即可。添加路径过长可参看解决Windows7 Path环境变量过长的方法环境变量path的值大于1023的解决办法

图示皆以我的安装路径为例。

 


2.OpenNI安装

安装过程中会弹出OpenNI的安装程序,将OpenNI的安装路径设置为“PCL_ROOT”下3rdParty\OpenNI2文件夹,例:

C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2  

(这里可以选择安装在其他目录,不过会影响到项目配置。注意:rudy的工作电脑和笔记本都是直接安在了默认路径,所以设计OpenNI2的路径请自行修改

 3.pdb安装

安装程序执行完成后将pdb文件包解压(即PCL-1.8.0-AllInOne-msvc2013-win64-pdb.rar),pdb文件拷贝到“PCL_ROOT”下的bin文件夹中,例:

C:\Program Files\PCL 1.8.0\bin  

三.环境变量 

上面说过了安装程序会自动添加“PCL_ROOT”项到系统环境变量中,此外还要手动添加PCL、Qhull、FLANN、VTK、OpenNI2的bin目录以及%OPENNI2_REDIST64%到PATH中

例:

我添加的如下(上面截图是原作者的,也可以。我因为sensor_msgs::PointCloud2的原因重装换成了下面的,应该没区别)

C:\Program Files\PCL 1.8.0\bin; C:\Program Files\PCL 1.8.0\3rdParty\Qhull\bin; C:\Program Files\PCL 1.8.0\3rdParty\FLANN\bin; 
C:\Program Files\PCL 1.8.0\3rdParty\VTK\bin;C:\Program Files\OpenNI2\Tools; C:\Program Files\OpenNI2\Redist

注意:如果安装程序没有自动添加“PCL_ROOT”则需要手动填上,因为如果结合CMake等工具生成工程的话,PCLConfig.cmake文件是通过“PCL_ROOT”来找PCL库的(如下图)。

四.项目配置

1.在VS2013中新建空项目并进行活动平台修改



注意VS2013中配置管理器(ConfigurationManager)默认活动平台(Active Solution plantform)是win32,如果安装的是x64的PCL,需要将其改成x64,否则编译的时候会出现奇怪的问题。

修改方法如下注意,本文重点

打开“解决方案资源管理器”视图 -> 右键目标项目("PCLTest"为例) -> 选择“属性”,进入程序属性页 -> 点击“配置管理器” -> 下拉“平台”按钮,点击“新建” -> 新建平台“x64”,(原博客错:从此处复制设置选“空”)切记,不可选择“空”,需要选择“win32”,选择从“win32”复制之后就不用每次配置“环境目录”了。而且,生成的.exe也可以直接在dos命令下运行了),创建新的解决方案平台打钩 -> 完成。

2.新项目属性表的建立与设置

 切换到“属性管理器”视图,解决方案资源管理器(Property Manager)与属性管理器(Solution Explorer)在同一个tab布局中,如果没找到的话,按如下方式打开:

菜单栏的“视图”(View) -> 其他窗口(Other Windows) -> 属性管理器(Property Manager)。

在项目PCLTest的“Debug | 64”下右键添加新项目属性表,取名PCLDebug64.props。双击该项目属性表,打开其属性页并进行以下四项操作

 

(1)修改左侧“VC++目录”下的“包含目录”。

添加设置如下:

(2)修改左侧“VC++目录”下的“库目录”。

添加设置如下:

(3)点击左侧“连接器” -> 点击“输入” -> 添加相关的“附加依赖项”。

添加配置如下:

pcl_apps_debug.lib 
pcl_common_debug.lib 
pcl_features_debug.lib 
pcl_filters_debug.lib 
pcl_io_ply_debug.lib 
pcl_io_debug.lib 
pcl_kdtree_debug.lib 
pcl_keypoints_debug.lib 
pcl_ml_debug.lib 
pcl_octree_debug.lib 
pcl_outofcore_debug.lib 
pcl_people_debug.lib 
pcl_recognition_debug.lib 
pcl_registration_debug.lib 
pcl_sample_consensus_debug.lib 
pcl_search_debug.lib 
pcl_segmentation_debug.lib 
pcl_simulation_debug.lib 
pcl_stereo_debug.lib 
pcl_surface_debug.lib 
pcl_tracking_debug.lib 
pcl_visualization_debug.lib 
libboost_atomic-vc120-mt-gd-1_59.lib 
libboost_chrono-vc120-mt-gd-1_59.lib 
libboost_container-vc120-mt-gd-1_59.lib 
libboost_context-vc120-mt-gd-1_59.lib 
libboost_coroutine-vc120-mt-gd-1_59.lib 
libboost_date_time-vc120-mt-gd-1_59.lib 
libboost_exception-vc120-mt-gd-1_59.lib 
libboost_filesystem-vc120-mt-gd-1_59.lib 
libboost_graph-vc120-mt-gd-1_59.lib 
libboost_iostreams-vc120-mt-gd-1_59.lib 
libboost_locale-vc120-mt-gd-1_59.lib 
libboost_log-vc120-mt-gd-1_59.lib 
libboost_log_setup-vc120-mt-gd-1_59.lib 
libboost_math_c99-vc120-mt-gd-1_59.lib 
libboost_math_c99f-vc120-mt-gd-1_59.lib 
libboost_math_c99l-vc120-mt-gd-1_59.lib 
libboost_math_tr1-vc120-mt-gd-1_59.lib 
libboost_math_tr1f-vc120-mt-gd-1_59.lib 
libboost_math_tr1l-vc120-mt-gd-1_59.lib 
libboost_mpi-vc120-mt-gd-1_59.lib 
libboost_prg_exec_monitor-vc120-mt-gd-1_59.lib 
libboost_program_options-vc120-mt-gd-1_59.lib 
libboost_random-vc120-mt-gd-1_59.lib 
libboost_regex-vc120-mt-gd-1_59.lib 
libboost_serialization-vc120-mt-gd-1_59.lib 
libboost_signals-vc120-mt-gd-1_59.lib 
libboost_system-vc120-mt-gd-1_59.lib 
libboost_test_exec_monitor-vc120-mt-gd-1_59.lib 
libboost_thread-vc120-mt-gd-1_59.lib 
libboost_timer-vc120-mt-gd-1_59.lib 
libboost_unit_test_framework-vc120-mt-gd-1_59.lib 
libboost_wave-vc120-mt-gd-1_59.lib 
libboost_wserialization-vc120-mt-gd-1_59.lib 
flann-gd.lib 
flann_cpp_s-gd.lib 
flann_s-gd.lib 
qhull-gd.lib 
qhullcpp-gd.lib 
qhullstatic-gd.lib 
qhullstatic_r-gd.lib 
qhull_p-gd.lib 
qhull_r-gd.lib 
vtkalglib-7.0-gd.lib 
vtkChartsCore-7.0-gd.lib 
vtkCommonColor-7.0-gd.lib 
vtkCommonComputationalGeometry-7.0-gd.lib 
vtkCommonCore-7.0-gd.lib 
vtkCommonDataModel-7.0-gd.lib 
vtkCommonExecutionModel-7.0-gd.lib 
vtkCommonMath-7.0-gd.lib 
vtkCommonMisc-7.0-gd.lib 
vtkCommonSystem-7.0-gd.lib 
vtkCommonTransforms-7.0-gd.lib 
vtkDICOMParser-7.0-gd.lib 
vtkDomainsChemistry-7.0-gd.lib 
vtkDomainsChemistryOpenGL2-7.0-gd.lib 
vtkexoIIc-7.0-gd.lib 
vtkexpat-7.0-gd.lib 
vtkFiltersAMR-7.0-gd.lib 
vtkFiltersCore-7.0-gd.lib 
vtkFiltersExtraction-7.0-gd.lib 
vtkFiltersFlowPaths-7.0-gd.lib 
vtkFiltersGeneral-7.0-gd.lib 
vtkFiltersGeneric-7.0-gd.lib 
vtkFiltersGeometry-7.0-gd.lib 
vtkFiltersHybrid-7.0-gd.lib 
vtkFiltersHyperTree-7.0-gd.lib 
vtkFiltersImaging-7.0-gd.lib 
vtkFiltersModeling-7.0-gd.lib 
vtkFiltersParallel-7.0-gd.lib 
vtkFiltersParallelImaging-7.0-gd.lib 
vtkFiltersProgrammable-7.0-gd.lib 
vtkFiltersSelection-7.0-gd.lib 
vtkFiltersSMP-7.0-gd.lib 
vtkFiltersSources-7.0-gd.lib 
vtkFiltersStatistics-7.0-gd.lib 
vtkFiltersTexture-7.0-gd.lib 
vtkFiltersVerdict-7.0-gd.lib 
vtkfreetype-7.0-gd.lib 
vtkGeovisCore-7.0-gd.lib 
vtkglew-7.0-gd.lib 
vtkGUISupportQt-7.0-gd.lib 
vtkGUISupportQtSQL-7.0-gd.lib 
vtkhdf5-7.0-gd.lib 
vtkhdf5_hl-7.0-gd.lib 
vtkImagingColor-7.0-gd.lib 
vtkImagingCore-7.0-gd.lib 
vtkImagingFourier-7.0-gd.lib 
vtkImagingGeneral-7.0-gd.lib 
vtkImagingHybrid-7.0-gd.lib 
vtkImagingMath-7.0-gd.lib 
vtkImagingMorphological-7.0-gd.lib 
vtkImagingSources-7.0-gd.lib 
vtkImagingStatistics-7.0-gd.lib 
vtkImagingStencil-7.0-gd.lib 
vtkInfovisCore-7.0-gd.lib 
vtkInfovisLayout-7.0-gd.lib 
vtkInteractionImage-7.0-gd.lib 
vtkInteractionStyle-7.0-gd.lib 
vtkInteractionWidgets-7.0-gd.lib 
vtkIOAMR-7.0-gd.lib 
vtkIOCore-7.0-gd.lib 
vtkIOEnSight-7.0-gd.lib 
vtkIOExodus-7.0-gd.lib 
vtkIOExport-7.0-gd.lib 
vtkIOGeometry-7.0-gd.lib 
vtkIOImage-7.0-gd.lib 
vtkIOImport-7.0-gd.lib 
vtkIOInfovis-7.0-gd.lib 
vtkIOLegacy-7.0-gd.lib 
vtkIOLSDyna-7.0-gd.lib 
vtkIOMINC-7.0-gd.lib 
vtkIOMovie-7.0-gd.lib 
vtkIONetCDF-7.0-gd.lib 
vtkIOParallel-7.0-gd.lib 
vtkIOParallelXML-7.0-gd.lib 
vtkIOPLY-7.0-gd.lib 
vtkIOSQL-7.0-gd.lib 
vtkIOVideo-7.0-gd.lib 
vtkIOXML-7.0-gd.lib 
vtkIOXMLParser-7.0-gd.lib 
vtkjpeg-7.0-gd.lib 
vtkjsoncpp-7.0-gd.lib 
vtklibxml2-7.0-gd.lib 
vtkmetaio-7.0-gd.lib 
vtkNetCDF-7.0-gd.lib 
vtkNetCDF_cxx-7.0-gd.lib 
vtkoggtheora-7.0-gd.lib 
vtkParallelCore-7.0-gd.lib 
vtkpng-7.0-gd.lib 
vtkproj4-7.0-gd.lib 
vtkRenderingAnnotation-7.0-gd.lib 
vtkRenderingContext2D-7.0-gd.lib 
vtkRenderingContextOpenGL2-7.0-gd.lib 
vtkRenderingCore-7.0-gd.lib 
vtkRenderingFreeType-7.0-gd.lib 
vtkRenderingImage-7.0-gd.lib 
vtkRenderingLabel-7.0-gd.lib 
vtkRenderingLOD-7.0-gd.lib 
vtkRenderingOpenGL2-7.0-gd.lib 
vtkRenderingQt-7.0-gd.lib 
vtkRenderingVolume-7.0-gd.lib 
vtkRenderingVolumeOpenGL2-7.0-gd.lib 
vtksqlite-7.0-gd.lib 
vtksys-7.0-gd.lib 
vtktiff-7.0-gd.lib 
vtkverdict-7.0-gd.lib 
vtkViewsContext2D-7.0-gd.lib 
vtkViewsCore-7.0-gd.lib 
vtkViewsInfovis-7.0-gd.lib 
vtkViewsQt-7.0-gd.lib 
vtkzlib-7.0-gd.lib



4)点击左侧“C/C++” -> 点击预处理器” -> 添加相关的预处理器定义

添加设置为:(个人以为可以不用设置,但我第一次新建属性表的时候设置了也就没改)

_SCL_SECURE_NO_WARNINGS

_CRT_SECURE_NO_WARNINGS

_SCL_SECURE_NO_WARNINGS  
_CRT_SECURE_NO_WARNINGS  

对该新建立的“项目属性表”进行以上四步操作后,可以把这个属性文件保存出来,每次用的时候在新建项目里导入就可以了。


 五、测试代码

 我用的是PCL1.7.2以后的新版本中才有的regiongrowing函数,为了方便大家运行,我打包上传了,大家可以直接点击.sln打开工程运行。详见:https://download.csdn.net/download/liukunrs/10463584


六、环境变量path的值大于1023的解决办法

 1.计算机—>属性—>更改设置—>高级—>环境变量

 2.然后编辑Path,全选将其中的路径全部复制出来。新建一个系统变量取名path2,将复制的内容放入其中。

 3.然后再Path中建立一个引用。也就是引用path1的路径。

 方法:在path中开头或者结尾中放入%path1%  注意前后加;就行

例如:把”%PCL_ROOT%\bin;%PCL_ROOT%\3rdParty\Qhull\bin;%PCL_ROOT%\3rdParty\FLANN\bin;%PCL_ROOT%\3rdParty\VTK\bin;%PCL_ROOT%\3rdParty\OpenNI2\Tools;%OPENNI2_REDIST64%”剪切出来,放到新建的Path1中,而原Path中在最后加上“%Path1%”

七、遇到的问题:

1、如果头文件中包含了

#include <pcl/sample_consensus/model_types.h>

那么会出现pcl::SAC_SAMPLE_SIZE的报错,可查看我CSDN博客解决:https://blog.csdn.net/liukunrs/article/details/80361134


猜你喜欢

转载自blog.csdn.net/liukunrs/article/details/80263804