已经接触pcl有半年多时间了,从一开始的小白,到现在可以独立解决调试问题,中间可谓冷暖自知。碰了很多次壁,出现各种各样的错误,前前后后在三个不同型号的电脑上配环境也运行过代码。这次把自己在配置环境中遇到的问题和方法总结一下,先贴两个一直以来参考的教程:
https://www.cnblogs.com/li-yao7758258/p/8066352.html
https://blog.youkuaiyun.com/qq_42570058/article/details/80891372
里面还是比较详细的记录了配置的每个环节需要注意的问题,以下是我总结的内容:首先,要了解自己所要配置的环境是多少位的,这个很重要,从开始配置到结束都要保持一致,这里以pcl1.8+vs2013+win64为例;
PCL的库可以在官方网站上下载,也可参考下载地址链接:https://pan.baidu.com/s/1MXGJFYQ_FIMAAP5ybXBc2A 密码:krj5
vs2013的下载安装就不做赘述,网上百度就可以了。pcl1.8的版本我使用了:PCL-1.8.0-AllInOne-msvc2013-win64,PCL-1.8.0-AllInOne还是很好用的,第三方库很完整,不需要单独在下载很方便,这里注意pcl一定要选择和vs相匹配的版本,不然可能会很麻烦。
安装步骤
PCL整个安装过程需要注意,我是安装在c盘,建议勾选上“Add PCL to the system PATH for all users”;安装时,会提示pcl的安装路径,选择非中文的路径即可;OpenNI的安装路径选择PCL安装路径的3rdParty下的OpenNI2文件夹中。

安装完成之后将下载好的PCL-1.8.0-AllInOne-msvc2013-win64-pdb,pdb文件拷贝到PCL ROOT下的bin文件夹中;

配置步骤
打开vs2013新建一个c++控制台程序,选择空项目,去掉“预编译头(P)”前的勾,去掉“安全开发生命周期(SDL)检查(C)”前的勾,其它默认即可。

确定之后系统默认调试器为Debug -Win32,vs的编译器是分为32位和64位的,这里跟计算机操作系统的位数并没有关系,不同的位数需要不同的lib和dll才能编译出来,也就是一直强调的pcl版本选择问题。

如上图,在视图中选择属性管理器;

我们需要生成64位的程序,要将默认的win32改为x64,点击下拉框的配置管理器,新建或编辑新的解决方案平台;

设置完成后属性管理器回变为debug和release两种;

这时就开始【配置属性表】,这里要注意是debugx64的属性,在这里我们需要配置附加包含目录,附加库目录,附加依赖项等;
1.右击项目属性,设置C/C++常规中的附加包含目录:

点击下拉框中的编辑输入以下内容:

C:\Program Files\PCL 1.8.0\include\pcl-1.8
C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_59
C:\Program Files\PCL 1.8.0\3rdParty\Eigen\eigen3
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\include
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Include
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\include
C:\Program Files\PCL 1.8.0\3rdParty\VTK\include\vtk-7.0
目录路径要根据自己的pcl安装路径做改变,这里是我自己的安装路径。
2.设置vc++目录中的包含目录和库目录:

包含目录:点击下拉框中的编辑输入以下内容:

C:\Program Files\PCL 1.8.0\include\pcl-1.8
C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_59
C:\Program Files\PCL 1.8.0\3rdParty\Eigen\eigen3
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\include
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Include
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\include
C:\Program Files\PCL 1.8.0\3rdParty\VTK
库目录:点击下拉框中的编辑输入以下内容:
C:\Program Files\PCL 1.8.0\lib
C:\Program Files\PCL 1.8.0\3rdParty\Boost\lib
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\lib
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\lib
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\lib
C:\Program Files\PCL 1.8.0\3rdParty\VTK\lib
3.在链接器的常规中设置附加库目录,包含pcl和第三方库的lib文件路径。

点击下拉框中的编辑输入以下内容:

C:\Program Files\PCL 1.8.0\lib
C:\Program Files\PCL 1.8.0\3rdParty\Boost\lib
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\lib
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\lib
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\lib
C:\Program Files\PCL 1.8.0\3rdParty\VTK\lib
4.在链接器的输入中设置附加依赖项:

输入以下内容,以下库文件为debug64位的附加依赖项:

pcl_apps_debug.lib
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_debug.lib
pcl_io_ply_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_cpp_s-gd.lib
flann_s-gd.lib
flann-gd.lib
OpenNI2.lib
qhullstatic_r-gd.lib
qhull_p-gd.lib
qhull_r-gd.lib
qhullcpp-gd.lib
qhull-gd.lib
qhullstatic-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
以下库文件为release64位的附加依赖项:
pcl_common_release.lib
pcl_features_release.lib
pcl_filters_release.lib
pcl_io_ply_release.lib
pcl_io_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
libboost_atomic-vc120-mt-1_59.lib
libboost_chrono-vc120-mt-1_59.lib
libboost_container-vc120-mt-1_59.lib
libboost_context-vc120-mt-1_59.lib
libboost_coroutine-vc120-mt-1_59.lib
libboost_date_time-vc120-mt-1_59.lib
libboost_exception-vc120-mt-1_59.lib
libboost_filesystem-vc120-mt-1_59.lib
libboost_graph-vc120-mt-1_59.lib
libboost_iostreams-vc120-mt-1_59.lib
libboost_locale-vc120-mt-1_59.lib
libboost_log-vc120-mt-1_59.lib
libboost_log_setup-vc120-mt-1_59.lib
libboost_math_c99-vc120-mt-1_59.lib
libboost_math_c99f-vc120-mt-1_59.lib
libboost_math_c99l-vc120-mt-1_59.lib
libboost_math_tr1-vc120-mt-1_59.lib
libboost_math_tr1f-vc120-mt-1_59.lib
libboost_math_tr1l-vc120-mt-1_59.lib
libboost_mpi-vc120-mt-1_59.lib
libboost_prg_exec_monitor-vc120-mt-1_59.lib
libboost_program_options-vc120-mt-1_59.lib
libboost_random-vc120-mt-1_59.lib
libboost_regex-vc120-mt-1_59.lib
libboost_serialization-vc120-mt-1_59.lib
libboost_signals-vc120-mt-1_59.lib
libboost_system-vc120-mt-1_59.lib
libboost_test_exec_monitor-vc120-mt-1_59.lib
libboost_thread-vc120-mt-1_59.lib
libboost_timer-vc120-mt-1_59.lib
libboost_unit_test_framework-vc120-mt-1_59.lib
libboost_wave-vc120-mt-1_59.lib
libboost_wserialization-vc120-mt-1_59.lib
flann_cpp_s.lib
flann_s.lib
qhull.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
qhull_p.lib
qhull_r.lib
vtkalglib-7.0.lib
vtkChartsCore-7.0.lib
vtkCommonColor-7.0.lib
vtkCommonComputationalGeometry-7.0.lib
vtkCommonCore-7.0.lib
vtkCommonDataModel-7.0.lib
vtkCommonExecutionModel-7.0.lib
vtkCommonMath-7.0.lib
vtkCommonMisc-7.0.lib
vtkCommonSystem-7.0.lib
vtkCommonTransforms-7.0.lib
vtkDICOMParser-7.0.lib
vtkDomainsChemistry-7.0.lib
vtkDomainsChemistryOpenGL2-7.0.lib
vtkexoIIc-7.0.lib
vtkexpat-7.0.lib
vtkFiltersAMR-7.0.lib
vtkFiltersCore-7.0.lib
vtkFiltersExtraction-7.0.lib
vtkFiltersFlowPaths-7.0.lib
vtkFiltersGeneral-7.0.lib
vtkFiltersGeneric-7.0.lib
vtkFiltersGeometry-7.0.lib
vtkFiltersHybrid-7.0.lib
vtkFiltersHyperTree-7.0.lib
vtkFiltersImaging-7.0.lib
vtkFiltersModeling-7.0.lib
vtkFiltersParallel-7.0.lib
vtkFiltersParallelImaging-7.0.lib
vtkFiltersProgrammable-7.0.lib
vtkFiltersSelection-7.0.lib
vtkFiltersSMP-7.0.lib
vtkFiltersSources-7.0.lib
vtkFiltersStatistics-7.0.lib
vtkFiltersTexture-7.0.lib
vtkFiltersVerdict-7.0.lib
vtkfreetype-7.0.lib
vtkGeovisCore-7.0.lib
vtkglew-7.0.lib
vtkGUISupportQt-7.0.lib
vtkGUISupportQtSQL-7.0.lib
vtkhdf5-7.0.lib
vtkhdf5_hl-7.0.lib
vtkImagingColor-7.0.lib
vtkImagingCore-7.0.lib
vtkImagingFourier-7.0.lib
vtkImagingGeneral-7.0.lib
vtkImagingHybrid-7.0.lib
vtkImagingMath-7.0.lib
vtkImagingMorphological-7.0.lib
vtkImagingSources-7.0.lib
vtkImagingStatistics-7.0.lib
vtkImagingStencil-7.0.lib
vtkInfovisCore-7.0.lib
vtkInfovisLayout-7.0.lib
vtkInteractionImage-7.0.lib
vtkInteractionStyle-7.0.lib
vtkInteractionWidgets-7.0.lib
vtkIOAMR-7.0.lib
vtkIOCore-7.0.lib
vtkIOEnSight-7.0.lib
vtkIOExodus-7.0.lib
vtkIOExport-7.0.lib
vtkIOGeometry-7.0.lib
vtkIOImage-7.0.lib
vtkIOImport-7.0.lib
vtkIOInfovis-7.0.lib
vtkIOLegacy-7.0.lib
vtkIOLSDyna-7.0.lib
vtkIOMINC-7.0.lib
vtkIOMovie-7.0.lib
vtkIONetCDF-7.0.lib
vtkIOParallel-7.0.lib
vtkIOParallelXML-7.0.lib
vtkIOPLY-7.0.lib
vtkIOSQL-7.0.lib
vtkIOVideo-7.0.lib
vtkIOXML-7.0.lib
vtkIOXMLParser-7.0.lib
vtkjpeg-7.0.lib
vtkjsoncpp-7.0.lib
vtklibxml2-7.0.lib
vtkmetaio-7.0.lib
vtkNetCDF-7.0.lib
vtkNetCDF_cxx-7.0.lib
vtkoggtheora-7.0.lib
vtkParallelCore-7.0.lib
vtkpng-7.0.lib
vtkproj4-7.0.lib
vtkRenderingAnnotation-7.0.lib
vtkRenderingContext2D-7.0.lib
vtkRenderingContextOpenGL2-7.0.lib
vtkRenderingCore-7.0.lib
vtkRenderingFreeType-7.0.lib
vtkRenderingImage-7.0.lib
vtkRenderingLabel-7.0.lib
vtkRenderingLOD-7.0.lib
vtkRenderingOpenGL2-7.0.lib
vtkRenderingQt-7.0.lib
vtkRenderingVolume-7.0.lib
vtkRenderingVolumeOpenGL2-7.0.lib
vtksqlite-7.0.lib
vtksys-7.0.lib
vtktiff-7.0.lib
vtkverdict-7.0.lib
vtkViewsContext2D-7.0.lib
vtkViewsCore-7.0.lib
vtkViewsInfovis-7.0.lib
vtkViewsQt-7.0.lib
vtkzlib-7.0.lib
注意:以上的配置操作最后都要点击对话框右下角的应用按钮,否则不生效。
5.动态链接库的配置有很多种:把dll拷贝到system32里去;把dll拷贝到编译出来的程序的文件中;直接配置到项目中;在系统的path中添加dll的路径,四种任选其一。这里示范配置系统环境变量,打开控制面板\系统和安全\系统->高级系统设置->环境变量;
修改path路径在后面添加下面的文字:
;%PCL_ROOT%\bin
;%PCL_ROOT%\3rdParty\Qhull\bin
;%PCL_ROOT%\3rdParty\FLANN\bin
;%PCL_ROOT%\3rdParty\VTK\bin
;%PCL_ROOT%\3rdParty\OpenNI2\Tools
注意:配置完系统变量需重启计算机才能生效。
以上,所有的配置已经完成了,给项目中添加新的程序就可以编译运行了。
本文详细介绍如何在Windows 64位环境下配置PCL 1.8与VS2013进行点云处理,包括安装步骤、VS项目的配置流程及动态链接库的设置方法。
1万+





