pcl1.8.0+vs2015配置安装【小白入门与遇到过的问题解决】

来源:互联网 发布:快消品行业数据 编辑:程序博客网 时间:2024/05/29 17:00

PCL 的 对Window的 1.6.0以后的新版本都不在官网上放出来了,转而是Github上。所以大家都要注意了。

Github 地址:https://github.com/PointCloudLibrary/pcl/releases


另外,要根据自己的系统和VS的版本来选择PCL的版本

2015已经在之前安装好了,这里主要讲的pcl的配置使用。

1.首先下载pcl的安装包

因为从官方网站上下不来(可能和vpn有关)这是之前找的一个网盘里下载的 我下的是对于vs2015 64位的 ALLINOne安装包。网上还有一些要自己下很多源码再编译配置的教程,那些基本都是以前的pcl。1.8.0版本的直接出了ALLINOne,就不用那么麻烦了。这里的pdb是用于以后的调试的,之后会讲到。属性表这个应该是为了省略向vs中天津头文件和源文件的过程,结果我这个下的不太好用,以至于绕了很多路。.pcd文件用于后续的测试。

2.管理员运行exe文件,基本就是下一步。其中会出现如下页面:

注:这里它默认的不向系统天津路径。建议大家手动向系统添加。我这里改成了第二个,改成第二个之后,在以后安装时会报错:大致报的错就是:由于PATH路径太长,不能modify PATH。最开始我还以为是安装出现了问题,后来卸载再安装的时候,这里就没选择添加路径,就没有报错了。

还有一些安装注意事项:

1.安装在默认位置即可。(这里是为了props文件,后来发现我这里的props文件不能用)

2.安装过程中,会弹出OpenNI的安装程序,更改OpenNI的安装路径为你安装的PCL路径下的3rdParty文件夹下的OpenNI2文件夹中。

3.向环境变量中添加。

安装完成后,向系统环境变量中添加

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

其实就是你安装的程序的bin目录。因为默认安装是安装在C盘里的。

注意:安装完成后重启下电脑。

然后就是在vs中使用pvcl(这里真的是要了命了哟)

1.在vs中建立一个控制台应用程序。

这里注意,由于我下的64位的程序,所以将上面默认的win32改成x64,具体方法就是点击点击-配置管理器-新建x64的就可以。

2.在新建的.cpp文件中敲入如下代码。

#include <iostream> //标准输入输出流#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件int main(int argc, char** argv){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 创建点云(指针)if (pcl::io::loadPCDFile<pcl::PointXYZ>("E:\\pcl1.8\\rabbit.pcd", *cloud) == -1) //* 读入PCD格式的文件,如果文件不存在,返回-1{PCL_ERROR("Couldn't read file test_pcd.pcd \n"); //文件不存在时,返回错误,终止程序。return (-2);}std::cout << "Loaded "<< cloud->width * cloud->height<< " data points from test_file.pcd with the following fields: "<< std::endl;//for (size_t i = 0; i < cloud->points.size (); ++i) //显示所有的点for (size_t i = 0; i < 5; ++i) // 为了方便观察,只显示前5个点std::cout << "    " << cloud->points[i].x<< " " << cloud->points[i].y<< " " << cloud->points[i].z << std::endl;getchar();//等待输入命令,防止生成后闪退,看不懂程序结果。return (0);}

需要注意的是:这里打开pcd文件的路径要根据pcd文件所在的路径进行更改。


3.配置源文件和头文件

在vs中选择调试->属性,选择vc++目录。可以看到如下页面。



对里面的包含目录进行编辑,添加如下内容:



库目录中添加如下内容:



点击调试,添加环境后面的目录。



依次选择:调试-属性-链接器-附加依赖项:因为我目前是release项,添加以下内容:

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
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_type_erasure-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
vtkViewsContext2D-7.0.lib
vtkzlib-7.0.lib
vtkRenderingLOD-7.0.lib
vtkFiltersProgrammable-7.0.lib
vtkIOMovie-7.0.lib
vtkRenderingImage-7.0.lib
vtkIOVideo-7.0.lib
vtkexpat-7.0.lib
vtkIOPLY-7.0.lib
vtkhdf5_hl-7.0.lib
vtkInteractionImage-7.0.lib
vtkFiltersVerdict-7.0.lib
vtkCommonMisc-7.0.lib
vtkFiltersSelection-7.0.lib
vtkImagingStatistics-7.0.lib
vtkverdict-7.0.lib
vtkjpeg-7.0.lib
vtkFiltersParallelImaging-7.0.lib
vtkNetCDF_cxx-7.0.lib
vtkCommonSystem-7.0.lib
vtkalglib-7.0.lib
vtkpng-7.0.lib
vtkoggtheora-7.0.lib
vtkFiltersTexture-7.0.lib
vtkIOXMLParser-7.0.lib
vtkFiltersImaging-7.0.lib
vtkCommonMath-7.0.lib
vtkImagingFourier-7.0.lib
vtkImagingStencil-7.0.lib
vtkCommonColor-7.0.lib
vtkFiltersAMR-7.0.lib
vtkFiltersGeneric-7.0.lib
vtkImagingSources-7.0.lib
vtkCommonTransforms-7.0.lib
vtkViewsCore-7.0.lib
vtkImagingMath-7.0.lib
vtkFiltersHyperTree-7.0.lib
vtkRenderingContext2D-7.0.lib
vtkImagingColor-7.0.lib
vtkjsoncpp-7.0.lib
vtkIOParallelXML-7.0.lib
vtkDICOMParser-7.0.lib
vtktiff-7.0.lib
vtkDomainsChemistry-7.0.lib
vtkfreetype-7.0.lib
vtkIOImport-7.0.lib
vtkImagingMorphological-7.0.lib
vtkproj4-7.0.lib
vtksqlite-7.0.lib
vtkIOAMR-7.0.lib
vtkFiltersSMP-7.0.lib
vtkCommonComputationalGeometry-7.0.lib
vtkImagingHybrid-7.0.lib
vtkInteractionStyle-7.0.lib
vtkIOSQL-7.0.lib
vtkParallelCore-7.0.lib
vtkRenderingFreeType-7.0.lib
vtkNetCDF-7.0.lib
vtkIOExport-7.0.lib
vtkIOLSDyna-7.0.lib
vtkFiltersModeling-7.0.lib
vtkexoIIc-7.0.lib
vtkFiltersFlowPaths-7.0.lib
vtksys-7.0.lib
vtkIOMINC-7.0.lib
vtkFiltersGeometry-7.0.lib
vtkIOParallel-7.0.lib
vtkIONetCDF-7.0.lib
vtkGeovisCore-7.0.lib
vtkRenderingLabel-7.0.lib
vtkIOEnSight-7.0.lib
vtkInfovisLayout-7.0.lib
vtkImagingGeneral-7.0.lib
vtkFiltersSources-7.0.lib
vtkFiltersHybrid-7.0.lib
vtkIOInfovis-7.0.lib
vtkFiltersExtraction-7.0.lib
vtkIOCore-7.0.lib
vtkIOLegacy-7.0.lib
vtkmetaio-7.0.lib
vtkFiltersParallel-7.0.lib
vtkViewsInfovis-7.0.lib
vtkRenderingAnnotation-7.0.lib
vtkCommonExecutionModel-7.0.lib
vtkIOExodus-7.0.lib
vtklibxml2-7.0.lib
vtkIOXML-7.0.lib
vtkImagingCore-7.0.lib
vtkChartsCore-7.0.lib
vtkIOGeometry-7.0.lib
vtkFiltersStatistics-7.0.lib
vtkIOImage-7.0.lib
vtkInfovisCore-7.0.lib
vtkRenderingVolume-7.0.lib
vtkRenderingCore-7.0.lib
vtkhdf5-7.0.lib
vtkInteractionWidgets-7.0.lib
vtkFiltersGeneral-7.0.lib
vtkCommonDataModel-7.0.lib
vtkFiltersCore-7.0.lib
vtkCommonCore-7.0.lib
flann_cpp_s.lib
qhullstatic.lib
OpenNI2.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


4.然后就可以选择生成了。如果运气好,就可以看到控制台出现一系列数值是读取到的pcd里面的数值。



5.有可能出现的一些问题


如果vs说找不到OpenNI2.dll文件,但是你在你的pcl安装里还是可以搜到这个文件的。那么可以把这个文件复制到你的vs文件生成的。exe文件同目录下,一般这个错误就会消失了。


如果vs报(Win32): 已加载“C:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件。 

可以通过选择工具->选项,点击启动源服务器支持



可能会发出警告,坚持启用就可以了。

点击服务符合器。


然后一般这些问题就可以解决了。


如果出现找不到一些lib文件,去安装pcl的地方搜一搜,如果没有这个文件,就在链接器附加依赖项中删除这个文件就可以了。


这个是我配置过程中出现的所有问题,希望可以帮助大家尽快成功,少走弯路。

下一步回去研究props文件和其他的一些方法,让下一次建立工程的时候简单一些。