PCL安装与配置
一、配置环境
1.win7 64位
2.Visual Studio 2015
二 、准备工作
安装包准备:
https://github.com/PointCloudLibrary/pcl/releases
或者在我分享的链接里面下载也可以:
链接:https://pan.baidu.com/s/1ywbyNu2XfapaRZVVQ3PeTw?pwd=1236
提取码:1236
下载这两个文件:
1.双击安装包中的「PCL-1.8.0-AllInOne-msvc2013-win64.exe」程序,安装的时候注意选上Add PCL to the system PATH for all users,如图所示,这样安装程序会自动在系统环境变量中添加PCL_ROOT项。

3.安装程序执行完成后,将pdb文件压缩包解压(即:PCL-1.8.0-AllInOne-msvc2013-win64-pdb.rar或者:pcl-1.12.1-pdb-msvc2019-win64.zip,将pdb文件拷贝到PCL安装目录下的bin文件夹中。
将解压出来的下面这些文件:
拷贝到:

四 、添加环境变量
1.点击win7的控制面板->系统->高级系统设置->在系统属性的“高级选项”卡下点击“环境变量”;
2.在系统变量子菜单里面找到“Path”,如图:
3.点击编辑,添加如下:
;C:\Program Files\PCL 1.9.1\bin;C:\Program Files\PCL 1.9.1\3rdParty\FLANN\bin;C:\Program Files\PCL 1.9.1\3rdParty\Qhull\bin;C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Tools;C:\Program Files\PCL 1.9.1\3rdParty\VTK\bin
注意这里的“ ; ”分号;
假如安装在了D盘,添加的环境变量如下:
;D:\Program Files\PCL 1.8.0\bin;D:\Program Files\PCL 1.8.0\3rdParty\FLANN\bin;D:\Program Files\PCL 1.8.0\3rdParty\Qhull\bin;D:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Tools;D:\Program Files\PCL 1.8.0\3rdParty\VTK\bin
注意,第一项在“一键安装”时就已经添加。
添加环境变量之前的情况是:
编辑好之后如下图:
参考链接:https://zhuanlan.zhihu.com/p/36590026
五 、重启电脑
六、VS2015工程配置步骤
1.打开VS2015,创建新的win32控制台工程,建好后将平台改成X64;
2.点击项目菜单的属性,如图:
3.在弹出的对话框中,
① 点击“包含目录”下拉箭头->编辑,添加文件路径:
假如是安装在了C盘,则把下面的路径填进去:
C:\Program Files\PCL 1.9.1\include;C:\Program Files\PCL 1.9.1\include\pcl-1.9;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;C:\Program Files\PCL 1.9.1\3rdParty\Qhull\include;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\Boost\include\boost-1_68;C:\Program Files\PCL 1.9.1\3rdParty\FLANN\include\flann;$(IncludePath)
或者:
w530:
C:\Program Files\PCL 1.8.0\include;
C:\Program Files\PCL 1.8.0\include\pcl-1.8;
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\include;
C:\Program Files\PCL 1.8.0\3rdParty\Eigen\eigen3;
C:\Program Files\PCL 1.8.0\3rdParty\Boost\include;
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\include;
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Include;
C:\Program Files\PCL 1.8.0\3rdParty\VTK\include\vtk-8.1;
C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_68;
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\include\flann;
$(IncludePath)
填好后如下图所示:
假如是安装在了D盘,则把下面的路径填进去:
D:\Program Files\PCL 1.12.1\include;D:\Program Files\PCL 1.12.1\include\pcl-1.12;D:\Program Files\PCL 1.12.1\3rdParty\FLANN\include;D:\Program Files\PCL 1.12.1\3rdParty\Eigen\eigen3;D:\Program Files\PCL 1.12.1\3rdParty\Boost\include;D:\Program Files\PCL 1.12.1\3rdParty\Qhull\include;D:\Program Files\PCL 1.12.1\3rdParty\OpenNI2\Include;D:\Program Files\PCL 1.12.1\3rdParty\VTK\include\vtk-9.1;D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_78;D:\Program Files\PCL 1.12.1\include\pcl-1.8;D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_64;D:\Program Files\PCL 1.12.1\3rdParty\FLANN\include\flann;D:\Program Files\PCL 1.12.1\3rdParty\VTK\include\vtk-8.0;
完成后点击确定;
②点击“库目录”下拉箭头->编辑,添加文件路径:
可以使用matlab代码对部分路径进行提取:
%====================================================% % 安装PCL后,提取里面的.lib文件的文件名 % %====================================================% clc;clear; fclose('all'); file_dir = 'D:\Program Files\PCL 1.12.1\'; filelist_lib = dir(fullfile(file_dir, '\**\', '*.lib')); % 遍历一级及二级子文件夹,找出指定后缀名的所有文件 % 下面是写文件 fid=fopen('PCL_lib_files_name_debug.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件); fid2=fopen('PCL_lib_files_name_release.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件); fid3=fopen('PCL_lib_files_foldername.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件); for i=1:size(filelist_lib,1) % 遍历.lib文件的名字 if contains(filelist_lib(i).name,'-gd') || contains(filelist_lib(i).name,'d.lib') fprintf(fid,'%s\r\n',filelist_lib(i).name); % %s 以字符的形式写入数据; else fprintf(fid2,'%s\r\n',filelist_lib(i).name); end end fprintf(fid3,'%s\r\n',filelist_lib(1).folder); for i=1:size(filelist_lib,1)-1 % 遍历包含lib文件的文件夹的名字 if strcmp(filelist_lib(i+1).folder,filelist_lib(i).folder) continue; end fprintf(fid3,'%s\r\n',filelist_lib(i+1).folder); % %d 表示以整数形式写入数据,这正是我想要的; end fclose(fid); %关闭文件; fclose(fid2); %关闭文件; fclose(fid3); %关闭文件;
PCL安装在C盘的话填入以下信息:
C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68;
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\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\lib;
或者:
C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_68;
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\lib;
C:\Program Files\PCL 1.8.0\3rdParty\Boost\lib;
C:\Program Files\PCL 1.8.0\3rdParty\VTK\lib;
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\lib;
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Lib;
C:\Program Files\PCL 1.8.0\lib;
xps15 9550:
C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68
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\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\lib
填入后假如和下面的库目录不符合,再编辑修改一下:
D盘的话填入以下信息:
D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_78;D:\Program Files\PCL 1.12.1\lib;D:\Program Files\PCL 1.12.1\3rdParty\Boost\lib;D:\Program Files\PCL 1.12.1\3rdParty\FLANN\lib;D:\Program Files\PCL 1.12.1\3rdParty\OpenNI2\Lib;D:\Program Files\PCL 1.12.1\3rdParty\Qhull\lib;D:\Program Files\PCL 1.12.1\3rdParty\VTK\lib;
完成后点击确定;
4.点击链接器->输入->附加依赖项:
点击下拉箭头->编辑,添加下列文件:
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-vc140-mt-1_61.lib libboost_chrono-vc140-mt-1_61.lib libboost_container-vc140-mt-1_61.lib libboost_context-vc140-mt-1_61.lib libboost_coroutine-vc140-mt-1_61.lib libboost_date_time-vc140-mt-1_61.lib libboost_exception-vc140-mt-1_61.lib libboost_filesystem-vc140-mt-1_61.lib libboost_graph-vc140-mt-1_61.lib libboost_iostreams-vc140-mt-1_61.lib libboost_locale-vc140-mt-1_61.lib libboost_log-vc140-mt-1_61.lib libboost_log_setup-vc140-mt-1_61.lib libboost_math_c99-vc140-mt-1_61.lib libboost_math_c99f-vc140-mt-1_61.lib libboost_math_c99l-vc140-mt-1_61.lib libboost_math_tr1-vc140-mt-1_61.lib libboost_math_tr1f-vc140-mt-1_61.lib libboost_math_tr1l-vc140-mt-1_61.lib libboost_mpi-vc140-mt-1_61.lib libboost_prg_exec_monitor-vc140-mt-1_61.lib libboost_program_options-vc140-mt-1_61.lib libboost_random-vc140-mt-1_61.lib libboost_regex-vc140-mt-1_61.lib libboost_serialization-vc140-mt-1_61.lib libboost_signals-vc140-mt-1_61.lib libboost_system-vc140-mt-1_61.lib libboost_test_exec_monitor-vc140-mt-1_61.lib libboost_thread-vc140-mt-1_61.lib libboost_timer-vc140-mt-1_61.lib libboost_unit_test_framework-vc140-mt-1_61.lib libboost_wave-vc140-mt-1_61.lib libboost_wserialization-vc140-mt-1_61.lib flann.lib flann_s.lib flann-gd.lib flann_cpp_s.lib flann_cpp_s-gd.lib flann_s-gd.lib qhull.lib qhull_d.lib qhullcpp_d.lib qhullstatic.lib qhullstatic_d.lib qhullstatic_r.lib qhullstatic_r_d.lib qhull_p.lib qhull_p_d.lib qhull_r.lib qhull_r_d.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 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 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 vtkRenderingContextOpenGL-7.0.lib vtkRenderingCore-7.0.lib vtkRenderingFreeType-7.0.lib vtkRenderingImage-7.0.lib vtkRenderingLabel-7.0.lib vtkRenderingLOD-7.0.lib vtkRenderingOpenGL-7.0.lib vtkRenderingVolume-7.0.lib vtkRenderingVolumeOpenGL-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 vtkzlib-7.0.lib
上面很多的.lib文件一个一个的复制很麻烦,二级子文件夹里面也会有,所以使用matlab程序对.lib文件进行提取并另存到一个文本文件中,然后复制粘贴就行了,代码如下:
%====================================================% % 安装PCL后,提取里面的.lib文件的文件名 % %====================================================% clc;clear; file_dir = 'D:\Program Files\PCL 1.12.1\'; filelist_lib = dir(fullfile(file_dir, '\**\', '*.lib')); % 遍历一级及二级子文件夹,找出指定后缀名的所有文件 % 下面是写文件 fid=fopen('PCL_lib_files_name.txt','a'); %写的方式打开文件(若不存在,建立文件); for i=1:size(filelist_lib,1) fprintf(fid,'%s\r\n',filelist_lib(i).name); % %d 表示以整数形式写入数据,这正是我想要的; end fclose(fid); %关闭文件;
完成后点击确定;
注意:上面为在release下运行的文件,如果想在debug下运行,则将其中的release改成debug;
带-gd的和带d的为debug模式,不带的为release模式。这里应该按照两个模式分别添加不同的库文件。
用matlab代码把debug模式和release模式下的库文件区分开:
%====================================================%
% 安装PCL后,提取里面的.lib文件的文件名
%
%====================================================%
clc;clear;
fclose('all');
file_dir = 'C:\Program Files\PCL 1.9.1\';
filelist_lib = dir(fullfile(file_dir, '\**\', '*.lib')); % 遍历一级及二级子文件夹,找出指定后缀名的所有文件
% 下面是写文件
fid=fopen('PCL_lib_files_name_debug.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid2=fopen('PCL_lib_files_name_release.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid3=fopen('PCL_lib_files_foldername.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid4=fopen('PCL_lib_files_name_notsure.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
for i=1:size(filelist_lib,1) % 遍历.lib文件的名字
if contains(filelist_lib(i).name,'-mt-gd-x64') || contains(filelist_lib(i).name,'d.lib') || contains(filelist_lib(i).name,'_debug.lib')...
|| contains(filelist_lib(i).name,'OpenNI2')...
|| contains(filelist_lib(i).name,'glu')
fprintf(fid,'%s\r\n',filelist_lib(i).name); % %s 以字符的形式写入数据;
elseif contains(filelist_lib(i).name,'-mt-x64') || contains(filelist_lib(i).name,'_release.lib')
fprintf(fid2,'%s\r\n',filelist_lib(i).name);
else
fprintf(fid4,'%s\r\n',filelist_lib(i).name);
end
end
fprintf(fid3,'%s%s',filelist_lib(1).folder,';');
for i=1:size(filelist_lib,1)-1 % 遍历包含lib文件的文件夹的名字
if strcmp(filelist_lib(i+1).folder,filelist_lib(i).folder)
continue;
end
fprintf(fid3,'%s%s',filelist_lib(i+1).folder,';'); % %d 表示以整数形式写入数据,这正是我想要的;
end
fclose(fid); %关闭文件;
fclose(fid2); %关闭文件;
fclose(fid3); %关闭文件;
fclose(fid4); %关闭文件;
debug模式下的.lib文件有matlab遍历出来的下面这些:
libboost_atomic-vc141-mt-gd-x64-1_68.lib
libboost_bzip2-vc141-mt-gd-x64-1_68.lib
libboost_chrono-vc141-mt-gd-x64-1_68.lib
libboost_container-vc141-mt-gd-x64-1_68.lib
libboost_context-vc141-mt-gd-x64-1_68.lib
libboost_contract-vc141-mt-gd-x64-1_68.lib
libboost_coroutine-vc141-mt-gd-x64-1_68.lib
libboost_date_time-vc141-mt-gd-x64-1_68.lib
libboost_exception-vc141-mt-gd-x64-1_68.lib
libboost_fiber-vc141-mt-gd-x64-1_68.lib
libboost_filesystem-vc141-mt-gd-x64-1_68.lib
libboost_graph-vc141-mt-gd-x64-1_68.lib
libboost_graph_parallel-vc141-mt-gd-x64-1_68.lib
libboost_iostreams-vc141-mt-gd-x64-1_68.lib
libboost_locale-vc141-mt-gd-x64-1_68.lib
libboost_log-vc141-mt-gd-x64-1_68.lib
libboost_log_setup-vc141-mt-gd-x64-1_68.lib
libboost_math_c99-vc141-mt-gd-x64-1_68.lib
libboost_math_c99f-vc141-mt-gd-x64-1_68.lib
libboost_math_c99l-vc141-mt-gd-x64-1_68.lib
libboost_math_tr1-vc141-mt-gd-x64-1_68.lib
libboost_math_tr1f-vc141-mt-gd-x64-1_68.lib
libboost_math_tr1l-vc141-mt-gd-x64-1_68.lib
libboost_mpi-vc141-mt-gd-x64-1_68.lib
libboost_numpy27-vc141-mt-gd-x64-1_68.lib
libboost_numpy37-vc141-mt-gd-x64-1_68.lib
libboost_prg_exec_monitor-vc141-mt-gd-x64-1_68.lib
libboost_program_options-vc141-mt-gd-x64-1_68.lib
libboost_python27-vc141-mt-gd-x64-1_68.lib
libboost_python37-vc141-mt-gd-x64-1_68.lib
libboost_random-vc141-mt-gd-x64-1_68.lib
libboost_regex-vc141-mt-gd-x64-1_68.lib
libboost_serialization-vc141-mt-gd-x64-1_68.lib
libboost_signals-vc141-mt-gd-x64-1_68.lib
libboost_stacktrace_noop-vc141-mt-gd-x64-1_68.lib
libboost_stacktrace_windbg-vc141-mt-gd-x64-1_68.lib
libboost_stacktrace_windbg_cached-vc141-mt-gd-x64-1_68.lib
libboost_system-vc141-mt-gd-x64-1_68.lib
libboost_test_exec_monitor-vc141-mt-gd-x64-1_68.lib
libboost_thread-vc141-mt-gd-x64-1_68.lib
libboost_timer-vc141-mt-gd-x64-1_68.lib
libboost_type_erasure-vc141-mt-gd-x64-1_68.lib
libboost_unit_test_framework-vc141-mt-gd-x64-1_68.lib
libboost_wave-vc141-mt-gd-x64-1_68.lib
libboost_wserialization-vc141-mt-gd-x64-1_68.lib
libboost_zlib-vc141-mt-gd-x64-1_68.lib
flann-gd.lib
flann_cpp-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
OpenNI2.lib
qhull_d.lib
qhull_p_d.lib
qhull_r_d.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_r_d.lib
vtkChartsCore-8.1-gd.lib
vtkCommonColor-8.1-gd.lib
vtkCommonComputationalGeometry-8.1-gd.lib
vtkCommonCore-8.1-gd.lib
vtkCommonDataModel-8.1-gd.lib
vtkCommonExecutionModel-8.1-gd.lib
vtkCommonMath-8.1-gd.lib
vtkCommonMisc-8.1-gd.lib
vtkCommonSystem-8.1-gd.lib
vtkCommonTransforms-8.1-gd.lib
vtkDICOMParser-8.1-gd.lib
vtkDomainsChemistry-8.1-gd.lib
vtkFiltersAMR-8.1-gd.lib
vtkFiltersCore-8.1-gd.lib
vtkFiltersExtraction-8.1-gd.lib
vtkFiltersFlowPaths-8.1-gd.lib
vtkFiltersGeneral-8.1-gd.lib
vtkFiltersGeneric-8.1-gd.lib
vtkFiltersGeometry-8.1-gd.lib
vtkFiltersHybrid-8.1-gd.lib
vtkFiltersHyperTree-8.1-gd.lib
vtkFiltersImaging-8.1-gd.lib
vtkFiltersModeling-8.1-gd.lib
vtkFiltersParallel-8.1-gd.lib
vtkFiltersParallelImaging-8.1-gd.lib
vtkFiltersPoints-8.1-gd.lib
vtkFiltersProgrammable-8.1-gd.lib
vtkFiltersSMP-8.1-gd.lib
vtkFiltersSelection-8.1-gd.lib
vtkFiltersSources-8.1-gd.lib
vtkFiltersStatistics-8.1-gd.lib
vtkFiltersTexture-8.1-gd.lib
vtkFiltersTopology-8.1-gd.lib
vtkFiltersVerdict-8.1-gd.lib
vtkGeovisCore-8.1-gd.lib
vtkIOAMR-8.1-gd.lib
vtkIOCore-8.1-gd.lib
vtkIOEnSight-8.1-gd.lib
vtkIOExodus-8.1-gd.lib
vtkIOExport-8.1-gd.lib
vtkIOExportOpenGL-8.1-gd.lib
vtkIOGeometry-8.1-gd.lib
vtkIOImage-8.1-gd.lib
vtkIOImport-8.1-gd.lib
vtkIOInfovis-8.1-gd.lib
vtkIOLSDyna-8.1-gd.lib
vtkIOLegacy-8.1-gd.lib
vtkIOMINC-8.1-gd.lib
vtkIOMovie-8.1-gd.lib
vtkIONetCDF-8.1-gd.lib
vtkIOPLY-8.1-gd.lib
vtkIOParallel-8.1-gd.lib
vtkIOParallelXML-8.1-gd.lib
vtkIOSQL-8.1-gd.lib
vtkIOTecplotTable-8.1-gd.lib
vtkIOVideo-8.1-gd.lib
vtkIOXML-8.1-gd.lib
vtkIOXMLParser-8.1-gd.lib
vtkImagingColor-8.1-gd.lib
vtkImagingCore-8.1-gd.lib
vtkImagingFourier-8.1-gd.lib
vtkImagingGeneral-8.1-gd.lib
vtkImagingHybrid-8.1-gd.lib
vtkImagingMath-8.1-gd.lib
vtkImagingMorphological-8.1-gd.lib
vtkImagingSources-8.1-gd.lib
vtkImagingStatistics-8.1-gd.lib
vtkImagingStencil-8.1-gd.lib
vtkInfovisCore-8.1-gd.lib
vtkInfovisLayout-8.1-gd.lib
vtkInteractionImage-8.1-gd.lib
vtkInteractionStyle-8.1-gd.lib
vtkInteractionWidgets-8.1-gd.lib
vtkNetCDF-8.1-gd.lib
vtkParallelCore-8.1-gd.lib
vtkRenderingAnnotation-8.1-gd.lib
vtkRenderingContext2D-8.1-gd.lib
vtkRenderingContextOpenGL-8.1-gd.lib
vtkRenderingCore-8.1-gd.lib
vtkRenderingFreeType-8.1-gd.lib
vtkRenderingGL2PS-8.1-gd.lib
vtkRenderingImage-8.1-gd.lib
vtkRenderingLIC-8.1-gd.lib
vtkRenderingLOD-8.1-gd.lib
vtkRenderingLabel-8.1-gd.lib
vtkRenderingOpenGL-8.1-gd.lib
vtkRenderingVolume-8.1-gd.lib
vtkRenderingVolumeOpenGL-8.1-gd.lib
vtkViewsContext2D-8.1-gd.lib
vtkViewsCore-8.1-gd.lib
vtkViewsInfovis-8.1-gd.lib
vtkalglib-8.1-gd.lib
vtkexoIIc-8.1-gd.lib
vtkexpat-8.1-gd.lib
vtkfreetype-8.1-gd.lib
vtkgl2ps-8.1-gd.lib
vtkhdf5-8.1-gd.lib
vtkhdf5_hl-8.1-gd.lib
vtkjpeg-8.1-gd.lib
vtkjsoncpp-8.1-gd.lib
vtklibharu-8.1-gd.lib
vtklibxml2-8.1-gd.lib
vtklz4-8.1-gd.lib
vtkmetaio-8.1-gd.lib
vtknetcdfcpp-8.1-gd.lib
vtkoggtheora-8.1-gd.lib
vtkpng-8.1-gd.lib
vtkproj4-8.1-gd.lib
vtksqlite-8.1-gd.lib
vtksys-8.1-gd.lib
vtktiff-8.1-gd.lib
vtkverdict-8.1-gd.lib
vtkzlib-8.1-gd.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_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
再加上下面这些:
kernel32.lib;
user32.lib;
gdi32.lib;
winspool.lib;
shell32.lib;
ole32.lib;
oleaut32.lib;
uuid.lib;
comdlg32.lib;
advapi32.lib;
comctl32.lib;
wsock32.lib;
glu32.lib;
opengl32.lib;
ws2_32.lib;
Psapi.lib;
release模式下的.lib文件有matlab遍历出来的这些:
libboost_atomic-vc141-mt-x64-1_68.lib
libboost_bzip2-vc141-mt-x64-1_68.lib
libboost_chrono-vc141-mt-x64-1_68.lib
libboost_container-vc141-mt-x64-1_68.lib
libboost_context-vc141-mt-x64-1_68.lib
libboost_contract-vc141-mt-x64-1_68.lib
libboost_coroutine-vc141-mt-x64-1_68.lib
libboost_date_time-vc141-mt-x64-1_68.lib
libboost_exception-vc141-mt-x64-1_68.lib
libboost_fiber-vc141-mt-x64-1_68.lib
libboost_filesystem-vc141-mt-x64-1_68.lib
libboost_graph-vc141-mt-x64-1_68.lib
libboost_graph_parallel-vc141-mt-x64-1_68.lib
libboost_iostreams-vc141-mt-x64-1_68.lib
libboost_locale-vc141-mt-x64-1_68.lib
libboost_log-vc141-mt-x64-1_68.lib
libboost_log_setup-vc141-mt-x64-1_68.lib
libboost_math_c99-vc141-mt-x64-1_68.lib
libboost_math_c99f-vc141-mt-x64-1_68.lib
libboost_math_c99l-vc141-mt-x64-1_68.lib
libboost_math_tr1-vc141-mt-x64-1_68.lib
libboost_math_tr1f-vc141-mt-x64-1_68.lib
libboost_math_tr1l-vc141-mt-x64-1_68.lib
libboost_mpi-vc141-mt-x64-1_68.lib
libboost_numpy27-vc141-mt-x64-1_68.lib
libboost_numpy37-vc141-mt-x64-1_68.lib
libboost_prg_exec_monitor-vc141-mt-x64-1_68.lib
libboost_program_options-vc141-mt-x64-1_68.lib
libboost_python27-vc141-mt-x64-1_68.lib
libboost_python37-vc141-mt-x64-1_68.lib
libboost_random-vc141-mt-x64-1_68.lib
libboost_regex-vc141-mt-x64-1_68.lib
libboost_serialization-vc141-mt-x64-1_68.lib
libboost_signals-vc141-mt-x64-1_68.lib
libboost_stacktrace_noop-vc141-mt-x64-1_68.lib
libboost_stacktrace_windbg-vc141-mt-x64-1_68.lib
libboost_stacktrace_windbg_cached-vc141-mt-x64-1_68.lib
libboost_system-vc141-mt-x64-1_68.lib
libboost_test_exec_monitor-vc141-mt-x64-1_68.lib
libboost_thread-vc141-mt-x64-1_68.lib
libboost_timer-vc141-mt-x64-1_68.lib
libboost_type_erasure-vc141-mt-x64-1_68.lib
libboost_unit_test_framework-vc141-mt-x64-1_68.lib
libboost_wave-vc141-mt-x64-1_68.lib
libboost_wserialization-vc141-mt-x64-1_68.lib
libboost_zlib-vc141-mt-x64-1_68.lib
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
再加上下面这些:
flann.lib flann_cpp.lib flann_cpp_s.lib flann_s.lib MWClosestPoint.lib qhull.lib qhull_p.lib qhull_r.lib qhullcpp.lib qhullstatic.lib qhullstatic_r.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 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 vtkFiltersSMP-8.1.lib vtkFiltersSelection-8.1.lib vtkFiltersSources-8.1.lib vtkFiltersStatistics-8.1.lib vtkFiltersTexture-8.1.lib vtkFiltersTopology-8.1.lib vtkFiltersVerdict-8.1.lib vtkGeovisCore-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 vtkIOLSDyna-8.1.lib vtkIOLegacy-8.1.lib vtkIOMINC-8.1.lib vtkIOMovie-8.1.lib vtkIONetCDF-8.1.lib vtkIOPLY-8.1.lib vtkIOParallel-8.1.lib vtkIOParallelXML-8.1.lib vtkIOSQL-8.1.lib vtkIOTecplotTable-8.1.lib vtkIOVideo-8.1.lib vtkIOXML-8.1.lib vtkIOXMLParser-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 vtkNetCDF-8.1.lib vtkParallelCore-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 vtkRenderingLIC-8.1.lib vtkRenderingLOD-8.1.lib vtkRenderingLabel-8.1.lib vtkRenderingOpenGL-8.1.lib vtkRenderingVolume-8.1.lib vtkRenderingVolumeOpenGL-8.1.lib vtkViewsContext2D-8.1.lib vtkViewsCore-8.1.lib vtkViewsInfovis-8.1.lib vtkalglib-8.1.lib vtkexoIIc-8.1.lib vtkexpat-8.1.lib vtkfreetype-8.1.lib vtkgl2ps-8.1.lib vtkhdf5-8.1.lib vtkhdf5_hl-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 vtknetcdfcpp-8.1.lib vtkoggtheora-8.1.lib vtkpng-8.1.lib vtkproj4-8.1.lib vtksqlite-8.1.lib vtksys-8.1.lib vtktiff-8.1.lib vtkverdict-8.1.lib vtkzlib-8.1.lib
5.点击配置属性下的调试,右边有个环境项(实际上这个是设置Visual Studio的环境变量,使其在(调试)运行的时候,能够找到相应的动态链接库),把值设置为:
PATH=(PCL_ROOT)\3rdParty\FLANN\bin;(PCL_ROOT)\Qhull\bin;(PATH)
6.点击配置属性下的C/C++,点击它的子项预处理器,右边有个预处理器定义,添加上_SCL_SECURE_NO_WARNINGS 和 _CRT_SECURE_NO_WARNINGS。
7.点击配置属性下的C/C++,常规
如果安装在了C盘:
在附加包含目录中添加:C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68
如果安装在了D盘:
在附加包含目录中添加:D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
8.在属性管理器里点击项目,展开子项。
Property Manager与Solution Explorer在同一个tab布局中,如果没找到的话,可通过如下方式寻找属性管理器:菜单栏的VIEW(视图)->Other Windows(其他窗口)->Property Manager(属性管理器)。
如果安装的是32位,点击选中开头为Debug的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLDebug.props,添加上。点击选中开头为Release的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLRelease.props,添加上。
如果安装的是64位,点击选中开头为Debug的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLDebug.props,添加上。点击选中开头为Release的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLRelease.props,添加上。
注意在这里,64位的会有2个开头为Debug的子项,都要添加上PCLDebug.props,并且2个开头为Release的子项,也要添加上PCLRelease.props。
关于PCLRelease.props文件和PCLDebug.props文件在这个网盘链接:
链接:https://pan.baidu.com/s/19YiQflSC02F9vWApUQKLwg?pwd=csm3
提取码:csm3
9.
注意:如果出现以下这种问题:
解决方案:
从上图中的箭头中,将问题中提示的.lib文件删除即可;
如果出现以下问题:
解决方案1是:
在3的地方点击编辑:
把上图中的√去掉。
解决方案2是:
把libboost_atomic-vc141-mt-gd-x64-1_68.lib所在的目录添加到附加包含目录。
如果出现以下情况:
提示OpenNI2.dll丢失
在\3rdParty\OpenNI2\ 中找到*msi安装包,先卸载,在安装到该路径。
假如出现以下错误:
error C4996: 'vtkMapper::ImmediateModeRenderingOff':
解决办法:将sdl选择否
五、程序实际测试
测试1:
将rabbit.pcd(在网盘中,链接: https://pan.baidu.com/s/1mpktPz4tlQJzxHKMUPuxsQ 提取码: uhf4)放到与工程中的主.cpp同一位置的文件夹下(工程文件夹)
程序代码:
#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; }
效果图:
测试1在运行的时候出现这个问题:

在调试的时候出现这个问题的话:
#include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ> cloud; // Fill in the cloud data cloud.width = 5; cloud.height = 1; cloud.is_dense = false; cloud.points.resize(cloud.width * cloud.height); for (std::size_t i = 0; i < cloud.points.size(); ++i) { cloud.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f); cloud.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f); cloud.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f); } pcl::io::savePCDFileASCII("test_pcd.pcd", cloud); std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl; for (std::size_t i = 0; i < cloud.points.size(); ++i) std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl; return (0); }
输出下图(数字可能不同),则表示安装成功!

参考:
1.Win10系统PCL + VS2019的安装_★ James Liu @ CSDN-程序员宅基地 - 程序员宅基地 (cxyzjd.com)
2.VS2019 PCL1.10.1 安装配置方法 - 知乎 (zhihu.com)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)