PCL 1.12.1 +VS 2019 环境配置

下载安装

首先下载PCL-1.12.1-AllInOne-msvc2019-win64和对应的pcl-1.12.1-pdb-msvc2019-win64.zip

下载地址:Downloads | Point Cloud Library (pointclouds.org)

Tags · PointCloudLibrary/pcl · GitHub
在这里插入图片描述
新版本的PCL不需要开发者自行构建,有自行构建需求的可以参照官方给出的构建指南Compiling PCL from source on Windows — Point Cloud Library 0.0 documentation
在这里插入图片描述
运行PCL-1.12.1-AllInOne-msvc2019-win64.exe,勾选“Add PCL to the system PATH for users”,
在这里插入图片描述
默认安装在C盘,建议自定义安装目录。
在这里插入图片描述
默认勾选全部组件,点击“安装”。
在这里插入图片描述
安装过程中可能会出现”Warning!PATH too long installer unable to modify PATH!“的错误提示,新电脑可能没有这个问题,接下来进行手动配置环境变量即可。
可选操作
安装完成后查看环境变量会发现有如下三个:
在这里插入图片描述
这是三个系统变量均以”OPENNI2“开头,即安装组件的最后一个,推荐重新安装OpenNI2,将安装的组件统一到一个目录下,方便后续配置。可以到控制面板中卸载,也可以进入%PCLROOT%\3rdParty\OpenNI2目录下运行“OpenNI-Windows-x64-2.2.msi”。选择“remove”。
在这里插入图片描述
在这里插入图片描述
重新运行OpenNI-Windows-x64-2.2.msi,选择安装目录为%PCLROOT%\3rdParty\OpenNI2,点击“Install”
在这里插入图片描述
此时再查看环境变量,发现以”OPENNI2“开头的三个系统变量改为现在安装的目录。细心的也可以发现,卸载OpenNI后,这三个系统变量也随之删除,总之不需要特别关心。
在这里插入图片描述

环境配置

  • 添加环境变量

建议在Path中这样添加环境变量,这是因为在安装PCL时,安装程序为我们创建了一个叫“PCL_ROOT”的系统变量,添加其他变量时引用这个变量即可,如果PCL安装到了别的目录,只需更改“PCL_ROOT”的值即可,很方便。

%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools
%PCL_ROOT%\3rdParty\VTK\bin

当然采用如下方式也可以。
在这里插入图片描述
解压pcl-1.12.1-pdb-msvc2019-win64.zip,将所有的.pdb文件复制到%PCL_ROOT%\bin目录下,重启电脑
在这里插入图片描述

  • 添加包含目录
    创建C++空项目,修改项目为Debug,x64,右击项目,选择“属性”打开项目属性配置页面。
    VC++目录->包含目录,添加包含目录如下,共七项(不要照抄,根据个人安装目录配置),点击”应用“
D:\PCL 1.12.1\include\pcl-1.12
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\OpenNI2\Include
D:\PCL 1.12.1\3rdParty\FLANN\include
D:\PCL 1.12.1\3rdParty\Eigen\eigen3
D:\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
  • 添加库目录
    还是属性页,VC++目录->库目录,添加库目录如下,共六项(不要照抄,根据个人安装目录配置),点击”应用“
D:\PCL 1.12.1\3rdParty\VTK\lib
D:\PCL 1.12.1\3rdParty\OpenNI2\Lib
D:\PCL 1.12.1\3rdParty\Boost\lib
D:\PCL 1.12.1\3rdParty\FLANN\lib
D:\PCL 1.12.1\3rdParty\Qhull\lib
D:\PCL 1.12.1\lib
  • 添加预处理器定义和sdl检查设置
    还是属性页,C/C++ ->常规,SDL检查设为“否”,属性页没有该选项的,需要在项目中添加或创建cpp文件
    在这里插入图片描述

C/C++ ->预处理器,预处理器定义添加如下内容

BOOST_USE_WINDOWS_H
NOMINMAX
_CRT_SECURE_NO_DEPRECATE
  • 附加依赖项
    关于附加依赖项设置,可以参考这篇文章,:VS中PCL库附加依赖项配置 - life_limbo - 博客园 (cnblogs.com),该过程也是环境配置中最容易出错的一步。release和dedug的lib在命名上会有所区分,比如debug会以*d.lib或 *gd *.lib命名,release以 *.lib或 *r.lib命名,通过这一特征可以方便地区分出debug和release文件,输出整理文件名的方式包括但不限于使用.bat批处理、cmd命令等,这里以参考文章的.bat处理方式为例。

PCL部分(路径:%PCL_ROOT%\bin)
Debug(20项):

pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib

Release(20项):

pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io.lib
pcl_io_ply.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib

Boost部分(路径:%PCL_ROOT%\3rdParty\Boost\lib)
.bat文件

for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*mt-gd-x64-1_78.lib) do echo %%I>>adebug.txt
for %%I in (*mt-x64-1_78.lib) do echo %%I>>arelease.txt
pause

Debug(41项):

libboost_atomic-vc142-mt-gd-x64-1_78.lib
libboost_bzip2-vc142-mt-gd-x64-1_78.lib
libboost_chrono-vc142-mt-gd-x64-1_78.lib
libboost_container-vc142-mt-gd-x64-1_78.lib
libboost_context-vc142-mt-gd-x64-1_78.lib
libboost_contract-vc142-mt-gd-x64-1_78.lib
libboost_coroutine-vc142-mt-gd-x64-1_78.lib
libboost_date_time-vc142-mt-gd-x64-1_78.lib
libboost_exception-vc142-mt-gd-x64-1_78.lib
libboost_filesystem-vc142-mt-gd-x64-1_78.lib
libboost_graph-vc142-mt-gd-x64-1_78.lib
libboost_graph_parallel-vc142-mt-gd-x64-1_78.lib
libboost_iostreams-vc142-mt-gd-x64-1_78.lib
libboost_json-vc142-mt-gd-x64-1_78.lib
libboost_locale-vc142-mt-gd-x64-1_78.lib
libboost_log-vc142-mt-gd-x64-1_78.lib
libboost_log_setup-vc142-mt-gd-x64-1_78.lib
libboost_math_c99-vc142-mt-gd-x64-1_78.lib
libboost_math_c99f-vc142-mt-gd-x64-1_78.lib
libboost_math_c99l-vc142-mt-gd-x64-1_78.lib
libboost_math_tr1-vc142-mt-gd-x64-1_78.lib
libboost_math_tr1f-vc142-mt-gd-x64-1_78.lib
libboost_math_tr1l-vc142-mt-gd-x64-1_78.lib
libboost_mpi-vc142-mt-gd-x64-1_78.lib
libboost_nowide-vc142-mt-gd-x64-1_78.lib
libboost_numpy38-vc142-mt-gd-x64-1_78.lib
libboost_prg_exec_monitor-vc142-mt-gd-x64-1_78.lib
libboost_program_options-vc142-mt-gd-x64-1_78.lib
libboost_python38-vc142-mt-gd-x64-1_78.lib
libboost_random-vc142-mt-gd-x64-1_78.lib
libboost_regex-vc142-mt-gd-x64-1_78.lib
libboost_serialization-vc142-mt-gd-x64-1_78.lib
libboost_system-vc142-mt-gd-x64-1_78.lib
libboost_test_exec_monitor-vc142-mt-gd-x64-1_78.lib
libboost_thread-vc142-mt-gd-x64-1_78.lib
libboost_timer-vc142-mt-gd-x64-1_78.lib
libboost_type_erasure-vc142-mt-gd-x64-1_78.lib
libboost_unit_test_framework-vc142-mt-gd-x64-1_78.lib
libboost_wave-vc142-mt-gd-x64-1_78.lib
libboost_wserialization-vc142-mt-gd-x64-1_78.lib
libboost_zlib-vc142-mt-gd-x64-1_78.lib

Release(41项):

libboost_atomic-vc142-mt-x64-1_78.lib
libboost_bzip2-vc142-mt-x64-1_78.lib
libboost_chrono-vc142-mt-x64-1_78.lib
libboost_container-vc142-mt-x64-1_78.lib
libboost_context-vc142-mt-x64-1_78.lib
libboost_contract-vc142-mt-x64-1_78.lib
libboost_coroutine-vc142-mt-x64-1_78.lib
libboost_date_time-vc142-mt-x64-1_78.lib
libboost_exception-vc142-mt-x64-1_78.lib
libboost_filesystem-vc142-mt-x64-1_78.lib
libboost_graph-vc142-mt-x64-1_78.lib
libboost_graph_parallel-vc142-mt-x64-1_78.lib
libboost_iostreams-vc142-mt-x64-1_78.lib
libboost_json-vc142-mt-x64-1_78.lib
libboost_locale-vc142-mt-x64-1_78.lib
libboost_log-vc142-mt-x64-1_78.lib
libboost_log_setup-vc142-mt-x64-1_78.lib
libboost_math_c99-vc142-mt-x64-1_78.lib
libboost_math_c99f-vc142-mt-x64-1_78.lib
libboost_math_c99l-vc142-mt-x64-1_78.lib
libboost_math_tr1-vc142-mt-x64-1_78.lib
libboost_math_tr1f-vc142-mt-x64-1_78.lib
libboost_math_tr1l-vc142-mt-x64-1_78.lib
libboost_mpi-vc142-mt-x64-1_78.lib
libboost_nowide-vc142-mt-x64-1_78.lib
libboost_numpy38-vc142-mt-x64-1_78.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_78.lib
libboost_program_options-vc142-mt-x64-1_78.lib
libboost_python38-vc142-mt-x64-1_78.lib
libboost_random-vc142-mt-x64-1_78.lib
libboost_regex-vc142-mt-x64-1_78.lib
libboost_serialization-vc142-mt-x64-1_78.lib
libboost_system-vc142-mt-x64-1_78.lib
libboost_test_exec_monitor-vc142-mt-x64-1_78.lib
libboost_thread-vc142-mt-x64-1_78.lib
libboost_timer-vc142-mt-x64-1_78.lib
libboost_type_erasure-vc142-mt-x64-1_78.lib
libboost_unit_test_framework-vc142-mt-x64-1_78.lib
libboost_wave-vc142-mt-x64-1_78.lib
libboost_wserialization-vc142-mt-x64-1_78.lib
libboost_zlib-vc142-mt-x64-1_78.lib

VTK部分(路径:%PCL_ROOT%\VTK\lib)
.bat文件

for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*9.1d.lib) do echo %%I>>adebug.txt
for %%I in (*9.1.lib) do echo %%I>>arelease.txt
pause

Debug(139项):

vtkcgns-9.1d.lib
vtkChartsCore-9.1d.lib
vtkCommonColor-9.1d.lib
vtkCommonComputationalGeometry-9.1d.lib
vtkCommonCore-9.1d.lib
vtkCommonDataModel-9.1d.lib
vtkCommonExecutionModel-9.1d.lib
vtkCommonMath-9.1d.lib
vtkCommonMisc-9.1d.lib
vtkCommonSystem-9.1d.lib
vtkCommonTransforms-9.1d.lib
vtkDICOMParser-9.1d.lib
vtkDomainsChemistry-9.1d.lib
vtkDomainsChemistryOpenGL2-9.1d.lib
vtkdoubleconversion-9.1d.lib
vtkexodusII-9.1d.lib
vtkexpat-9.1d.lib
vtkFiltersAMR-9.1d.lib
vtkFiltersCore-9.1d.lib
vtkFiltersExtraction-9.1d.lib
vtkFiltersFlowPaths-9.1d.lib
vtkFiltersGeneral-9.1d.lib
vtkFiltersGeneric-9.1d.lib
vtkFiltersGeometry-9.1d.lib
vtkFiltersHybrid-9.1d.lib
vtkFiltersHyperTree-9.1d.lib
vtkFiltersImaging-9.1d.lib
vtkFiltersModeling-9.1d.lib
vtkFiltersParallel-9.1d.lib
vtkFiltersParallelImaging-9.1d.lib
vtkFiltersPoints-9.1d.lib
vtkFiltersProgrammable-9.1d.lib
vtkFiltersSelection-9.1d.lib
vtkFiltersSMP-9.1d.lib
vtkFiltersSources-9.1d.lib
vtkFiltersStatistics-9.1d.lib
vtkFiltersTexture-9.1d.lib
vtkFiltersTopology-9.1d.lib
vtkFiltersVerdict-9.1d.lib
vtkfmt-9.1d.lib
vtkfreetype-9.1d.lib
vtkGeovisCore-9.1d.lib
vtkgl2ps-9.1d.lib
vtkglew-9.1d.lib
vtkhdf5-9.1d.lib
vtkhdf5_hl-9.1d.lib
vtkImagingColor-9.1d.lib
vtkImagingCore-9.1d.lib
vtkImagingFourier-9.1d.lib
vtkImagingGeneral-9.1d.lib
vtkImagingHybrid-9.1d.lib
vtkImagingMath-9.1d.lib
vtkImagingMorphological-9.1d.lib
vtkImagingSources-9.1d.lib
vtkImagingStatistics-9.1d.lib
vtkImagingStencil-9.1d.lib
vtkInfovisCore-9.1d.lib
vtkInfovisLayout-9.1d.lib
vtkInteractionImage-9.1d.lib
vtkInteractionStyle-9.1d.lib
vtkInteractionWidgets-9.1d.lib
vtkIOAMR-9.1d.lib
vtkIOAsynchronous-9.1d.lib
vtkIOCGNSReader-9.1d.lib
vtkIOChemistry-9.1d.lib
vtkIOCityGML-9.1d.lib
vtkIOCONVERGECFD-9.1d.lib
vtkIOCore-9.1d.lib
vtkIOEnSight-9.1d.lib
vtkIOExodus-9.1d.lib
vtkIOExport-9.1d.lib
vtkIOExportGL2PS-9.1d.lib
vtkIOExportPDF-9.1d.lib
vtkIOGeometry-9.1d.lib
vtkIOHDF-9.1d.lib
vtkIOImage-9.1d.lib
vtkIOImport-9.1d.lib
vtkIOInfovis-9.1d.lib
vtkIOIOSS-9.1d.lib
vtkIOLegacy-9.1d.lib
vtkIOLSDyna-9.1d.lib
vtkIOMINC-9.1d.lib
vtkIOMotionFX-9.1d.lib
vtkIOMovie-9.1d.lib
vtkIONetCDF-9.1d.lib
vtkIOOggTheora-9.1d.lib
vtkIOParallel-9.1d.lib
vtkIOParallelXML-9.1d.lib
vtkIOPLY-9.1d.lib
vtkIOSegY-9.1d.lib
vtkIOSQL-9.1d.lib
vtkioss-9.1d.lib
vtkIOTecplotTable-9.1d.lib
vtkIOVeraOut-9.1d.lib
vtkIOVideo-9.1d.lib
vtkIOXML-9.1d.lib
vtkIOXMLParser-9.1d.lib
vtkjpeg-9.1d.lib
vtkjsoncpp-9.1d.lib
vtkkissfft-9.1d.lib
vtklibharu-9.1d.lib
vtklibproj-9.1d.lib
vtklibxml2-9.1d.lib
vtkloguru-9.1d.lib
vtklz4-9.1d.lib
vtklzma-9.1d.lib
vtkmetaio-9.1d.lib
vtknetcdf-9.1d.lib
vtkogg-9.1d.lib
vtkParallelCore-9.1d.lib
vtkParallelDIY-9.1d.lib
vtkpng-9.1d.lib
vtkpugixml-9.1d.lib
vtkRenderingAnnotation-9.1d.lib
vtkRenderingContext2D-9.1d.lib
vtkRenderingContextOpenGL2-9.1d.lib
vtkRenderingCore-9.1d.lib
vtkRenderingFreeType-9.1d.lib
vtkRenderingGL2PSOpenGL2-9.1d.lib
vtkRenderingImage-9.1d.lib
vtkRenderingLabel-9.1d.lib
vtkRenderingLOD-9.1d.lib
vtkRenderingOpenGL2-9.1d.lib
vtkRenderingSceneGraph-9.1d.lib
vtkRenderingUI-9.1d.lib
vtkRenderingVolume-9.1d.lib
vtkRenderingVolumeOpenGL2-9.1d.lib
vtkRenderingVtkJS-9.1d.lib
vtksqlite-9.1d.lib
vtksys-9.1d.lib
vtkTestingRendering-9.1d.lib
vtktheora-9.1d.lib
vtktiff-9.1d.lib
vtkverdict-9.1d.lib
vtkViewsContext2D-9.1d.lib
vtkViewsCore-9.1d.lib
vtkViewsInfovis-9.1d.lib
vtkWrappingTools-9.1d.lib
vtkzlib-9.1d.lib

Release(139项):

vtkcgns-9.1.lib
vtkChartsCore-9.1.lib
vtkCommonColor-9.1.lib
vtkCommonComputationalGeometry-9.1.lib
vtkCommonCore-9.1.lib
vtkCommonDataModel-9.1.lib
vtkCommonExecutionModel-9.1.lib
vtkCommonMath-9.1.lib
vtkCommonMisc-9.1.lib
vtkCommonSystem-9.1.lib
vtkCommonTransforms-9.1.lib
vtkDICOMParser-9.1.lib
vtkDomainsChemistry-9.1.lib
vtkDomainsChemistryOpenGL2-9.1.lib
vtkdoubleconversion-9.1.lib
vtkexodusII-9.1.lib
vtkexpat-9.1.lib
vtkFiltersAMR-9.1.lib
vtkFiltersCore-9.1.lib
vtkFiltersExtraction-9.1.lib
vtkFiltersFlowPaths-9.1.lib
vtkFiltersGeneral-9.1.lib
vtkFiltersGeneric-9.1.lib
vtkFiltersGeometry-9.1.lib
vtkFiltersHybrid-9.1.lib
vtkFiltersHyperTree-9.1.lib
vtkFiltersImaging-9.1.lib
vtkFiltersModeling-9.1.lib
vtkFiltersParallel-9.1.lib
vtkFiltersParallelImaging-9.1.lib
vtkFiltersPoints-9.1.lib
vtkFiltersProgrammable-9.1.lib
vtkFiltersSelection-9.1.lib
vtkFiltersSMP-9.1.lib
vtkFiltersSources-9.1.lib
vtkFiltersStatistics-9.1.lib
vtkFiltersTexture-9.1.lib
vtkFiltersTopology-9.1.lib
vtkFiltersVerdict-9.1.lib
vtkfmt-9.1.lib
vtkfreetype-9.1.lib
vtkGeovisCore-9.1.lib
vtkgl2ps-9.1.lib
vtkglew-9.1.lib
vtkhdf5-9.1.lib
vtkhdf5_hl-9.1.lib
vtkImagingColor-9.1.lib
vtkImagingCore-9.1.lib
vtkImagingFourier-9.1.lib
vtkImagingGeneral-9.1.lib
vtkImagingHybrid-9.1.lib
vtkImagingMath-9.1.lib
vtkImagingMorphological-9.1.lib
vtkImagingSources-9.1.lib
vtkImagingStatistics-9.1.lib
vtkImagingStencil-9.1.lib
vtkInfovisCore-9.1.lib
vtkInfovisLayout-9.1.lib
vtkInteractionImage-9.1.lib
vtkInteractionStyle-9.1.lib
vtkInteractionWidgets-9.1.lib
vtkIOAMR-9.1.lib
vtkIOAsynchronous-9.1.lib
vtkIOCGNSReader-9.1.lib
vtkIOChemistry-9.1.lib
vtkIOCityGML-9.1.lib
vtkIOCONVERGECFD-9.1.lib
vtkIOCore-9.1.lib
vtkIOEnSight-9.1.lib
vtkIOExodus-9.1.lib
vtkIOExport-9.1.lib
vtkIOExportGL2PS-9.1.lib
vtkIOExportPDF-9.1.lib
vtkIOGeometry-9.1.lib
vtkIOHDF-9.1.lib
vtkIOImage-9.1.lib
vtkIOImport-9.1.lib
vtkIOInfovis-9.1.lib
vtkIOIOSS-9.1.lib
vtkIOLegacy-9.1.lib
vtkIOLSDyna-9.1.lib
vtkIOMINC-9.1.lib
vtkIOMotionFX-9.1.lib
vtkIOMovie-9.1.lib
vtkIONetCDF-9.1.lib
vtkIOOggTheora-9.1.lib
vtkIOParallel-9.1.lib
vtkIOParallelXML-9.1.lib
vtkIOPLY-9.1.lib
vtkIOSegY-9.1.lib
vtkIOSQL-9.1.lib
vtkioss-9.1.lib
vtkIOTecplotTable-9.1.lib
vtkIOVeraOut-9.1.lib
vtkIOVideo-9.1.lib
vtkIOXML-9.1.lib
vtkIOXMLParser-9.1.lib
vtkjpeg-9.1.lib
vtkjsoncpp-9.1.lib
vtkkissfft-9.1.lib
vtklibharu-9.1.lib
vtklibproj-9.1.lib
vtklibxml2-9.1.lib
vtkloguru-9.1.lib
vtklz4-9.1.lib
vtklzma-9.1.lib
vtkmetaio-9.1.lib
vtknetcdf-9.1.lib
vtkogg-9.1.lib
vtkParallelCore-9.1.lib
vtkParallelDIY-9.1.lib
vtkpng-9.1.lib
vtkpugixml-9.1.lib
vtkRenderingAnnotation-9.1.lib
vtkRenderingContext2D-9.1.lib
vtkRenderingContextOpenGL2-9.1.lib
vtkRenderingCore-9.1.lib
vtkRenderingFreeType-9.1.lib
vtkRenderingGL2PSOpenGL2-9.1.lib
vtkRenderingImage-9.1.lib
vtkRenderingLabel-9.1.lib
vtkRenderingLOD-9.1.lib
vtkRenderingOpenGL2-9.1.lib
vtkRenderingSceneGraph-9.1.lib
vtkRenderingUI-9.1.lib
vtkRenderingVolume-9.1.lib
vtkRenderingVolumeOpenGL2-9.1.lib
vtkRenderingVtkJS-9.1.lib
vtksqlite-9.1.lib
vtksys-9.1.lib
vtkTestingRendering-9.1.lib
vtktheora-9.1.lib
vtktiff-9.1.lib
vtkverdict-9.1.lib
vtkViewsContext2D-9.1.lib
vtkViewsCore-9.1.lib
vtkViewsInfovis-9.1.lib
vtkWrappingTools-9.1.lib
vtkzlib-9.1.lib

VTK部分(路径:%PCL_ROOT%\OpenNI2\Lib)(一共1项)

OpenNI2.lib

FLANN部分(路径:%PCL_ROOT%\3rdParty\FLANN\lib)
Debug(一共4项)

flann_cpp_s-gd.lib
flann_cpp-gd.lib
flann_s-gd.lib
flann-gd.lib

Release(4项):

flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib

Qhull部分(路径:%PCL_ROOT%\3rdParty\Qhull\lib)
Debug(一共4项)

qhull_rd.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_rd.lib

Release(一共4项)

qhull_r.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib

总计Debug209项,Release209项。
在属性页->链接器->输入->附加依赖项,添加上述debug文件名

  • 测试程序:
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingOpenGL);
 
int user_data;
 
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor(1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere(o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;
 
}
 
void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape("text", 0);
    viewer.addText(ss.str(), 200, 300, "text", 0);
 
    //FIXME: possible race condition here:
    user_data++;
}
 
int main()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile("rabbit.pcd", *cloud);
 
    pcl::visualization::CloudViewer viewer("Cloud Viewer"); 

    //blocks until the cloud is actually rendered
    viewer.showCloud(cloud);
 
    //use the following functions to get access to the underlying more advanced/powerful
    //PCLVisualizer
 
    //This will only get called once
    viewer.runOnVisualizationThreadOnce(viewerOneOff);
 
    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread(viewerPsycho);
    while (!viewer.wasStopped())
    {
        //you can also do cool processing here
        //FIXME: Note that this is running in a separate thread from viewerPsycho
        //and you should guard against race conditions yourself...
        user_data++;
    }
    return 0;
}

注意事项:
1,该程序需要读取一个pcd文件,自备。
2,运行会报错,错误详情

严重性	代码	说明	项目	文件	行	禁止显示状态
错误	LNK2019	无法解析的外部符号 "void __cdecl vtkRenderingOpenGL_AutoInit_Construct(void)" (?vtkRenderingOpenGL_AutoInit_Construct@@YAXXZ),函数 "public: __cdecl `anonymous namespace'::vtkRenderingOpenGL_ModuleInit::vtkRenderingOpenGL_ModuleInit(void)" (??0vtkRenderingOpenGL_ModuleInit@?A0xa4168655@@QEAA@XZ) 中引用了该符号	Project1	D:\VS Code Storage\Project1\源.obj	1	

这是pcl版本不同导致的,将VTK_MODULE_INIT(vtkRenderingOpenGL); 改为VTK_MODULE_INIT(vtkRenderingOpenGL2); 即可正常运行。
运行后的窗口:
在这里插入图片描述
用鼠标将图像缩小即可看到小兔子:
在这里插入图片描述

可能出现的问题

1.即便只添加了PCL和VTK的lib文件,也可以运行上述测试程序,有兴趣的可以试试,这也是有些教程即便没有添加全部附加依赖项也可以显示小兔子的原因,基于此现象,该文章提出的附加依赖项是否完全,也成了我的一面之词,因此斗胆将此问题交由读者。
2.创建新项目后还是需要繁琐的配置,相关解决方式可以参考这篇文章:【新手教程】Visual Studio .props文件简介 - 知乎 (zhihu.com)

有问题可以私信或者评论区留言。

参考:

VS中PCL库附加依赖项配置 - life_limbo - 博客园 (cnblogs.com)

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: PCL 1.12.1 的安装和配置在 Visual Studio 2019 中需要一些步骤。 1. 下载 PCL 1.12.1 的源代码或二进制文件。 2. 打开 Visual Studio 2019,新建一个项目。 3. 在项目属性中配置链接器,添加需要的库文件路径。 4. 在项目属性中配置C++,添加需要的头文件路径。 5. 在代码中包含需要的头文件,并链接需要的库。 6. 编译和运行项目。 注意:这些步骤有可能会因系统和环境的不同而有所不同。在遇到问题时,可以查看 PCL 官网上的文档或在网上搜索相关教程。 ### 回答2: PCL(Point Cloud Library)是一款非常流行的点云数据处理库,可以用于三维点云数据的获取、滤波、配准、分割、识别等各种操作。而在使用PCL时,常常需要将它和Visual Studio配合使用,以便进行开发和调试。下面就为大家介绍如何在Visual Studio 2019中安装和配置PCL 1.12.1。 安装PCL 1.12.1 首先,需要从pcl官网下载pcl 1.12.1的源码包。解压后,可以看到opencv的一些文件夹,我们需要在它的根目录下创建一个build文件夹,并进入该文件夹后运行cmake-gui进行配置。 配置Cmake 首先,点击“Configure”按钮,之后弹出一个对话框,让我们选择生成的后端工具。在这里,我们选择Visual Studio 16 2019作为生成器。在配置下面的“Optional platform selection”处,选择“x64”后,就可以点击“Finish”进行配置。 配置过后,我们需要按照下面的步骤进行修改: 1. 在搜索框内输入“PCL”,然后在搜索结果中选中“PCL_BUILD_OVERVIEW”和“BUILD_external_PCL_3rdParty_Eigen”,将它们的值勾选为ON。 2. 继续搜索“BOOST”,然后将BUILD_BOOST的值勾选为ON。 3. 最后,我们输入“OpenCV”进行搜索,将BUILD_examples和BUILD_apps的值都勾选为OFF。 点击“Configure”按钮,等待Cmake运行完毕。 生成Visual Studio 2019的解决方案 在上一步完毕后,我们需要点击“Generate”按钮生成Visual Studio解决方案。完成后可以在build目录下看到PCL.sln文件。 将PCL添加到VS2019工程 新建VS2019工程后,将PCL.sln添加进来。然后打开Configuration Manager,将Active solution** platform设置为x64。在**Solution Explorer中的项目中,右键点击“Properties”属性,找到VC++ Directories,添加Include和Library目录,并添加PCL的lib文件。 至此,PCL 1.12.1已经在Visual Studio 2019中安装并配置完成了。可以在工程中使用opencv库了。通过PCL让开发者们可以更简单的使用3D模型进行分析、处理、展示等操作,极大的提高了3D数据的处理效率和质量,推进了3D技术的发展。 ### 回答3: PCL(Point Cloud Library)是一款非常流行的用于点云处理和分析的开源C++库。在这篇文章中,我们将会介绍如何在Windows操作系统上安装和配置最新版本的PCL(pcl1.12.1)与Visual Studio 2019(以下简称VS2019)。本文所涉及的操作系统和软件版本信息如下: - 操作系统:Windows 10 Pro,64位,版本1909 - CMake版本:3.18.6 - PCL版本:1.12.1 - Visual Studio版本:2019,16.9.4 步骤一:下载和安装CMake 首先,我们需要在官方网站(https://cmake.org/download/)上下载CMake(我们使用的是3.18.6版本)。下载完成后,直接运行安装程序,按照提示进行安装,一路Next即可。 步骤二:下载和安装PCL 接下来,我们需要从PCL官方网站(https://pointclouds.org/downloads/)上下载最新版的PCL(我们使用的是pcl-1.12.1-all-in-one-msvc2019-Win64.zip)。下载完成后,解压缩到本地文件夹中(例如C:\PCL)。 步骤三:配置短路径名称 由于PCL的目录结构比较深,某些编译器(例如VS2019)可能无法处理这样的目录结构。因此,我们需要使用短路径名称进行重命名。具体步骤如下: - 在资源管理器中,找到PCL文件夹,右键单击,选择"属性" - 在"属性"窗口中,点击"Web"选项卡,找到"本地路径"一栏,然后复制这个路径(例如:"C:\PCL\pcl-1.12.1-all-in-one-msvc2019-Win64") - 使用cmd命令行工具,将路径名称转换为短路径格式(例如:C:\PROGRA~1\..\PCL\pcl1~1.1-all)。 - 将短路径名称复制到剪贴板中。 步骤四:配置环境变量 打开"控制面板",选择"系统和安全"-"系统"-"高级系统设置"-"环境变量"。 在"系统变量"一栏中,找到"Path"变量,然后点击"编辑"按钮,在"编辑环境变量"窗口中,点击"新建"按钮,将剪贴板中的短路径名称添加进去,然后点击"确定"。 步骤五:生成PCL工程文件 接下来,我们需要使用CMake生成PCL的工程文件,具体步骤如下: - 打开CMakeGUI。 - 在"Where is the source code"一栏中,浏览到PCL源代码所在的目录。 - 在"Where to build the binaries"一栏中,选择一个空文件夹作为编译目录,并点击"Configure"按钮。 - 在"Configure"窗口中,选择"Visual Studio 16 2019"作为生成器,并点击"Finish"按钮。 - 在"Configure"窗口中,找到"WITH_QHULL"和"WITH_VTK"这两个选项,将它们都勾选上。 - 然后点击"Generate"按钮,CMake将会自动为我们生成PCL的工程文件。 步骤六:生成PCL工程 接下来,我们使用VS2019打开PCL的工程文件(例如pcl.sln),然后进行编译和生成。 在VS2019中打开工程文件时,需要选择"x64"作为平台,并确保编译器选项中指定了"Release"模式。 生成成功后,我们可以在PCL的bin文件夹下找到PCL的动态链接库和静态链接库文件(例如libpcl_common.lib、libpcl_io.lib等)。 至此,我们已经完成了PCL1.12.1的安装和配置工作,可以愉快地编写点云处理和分析的代码了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值