本帖最后由 wu329285298 于 2015-1-31 21:20 编辑
之前一直用PCL1.6做点云,界面采用mfc,但因为pcl版本限制,很多新功能用不了,被逼无奈,只好把pcl升级了,过程很痛苦,整整调了一个礼拜。为了减少后来人的麻烦,我把调试碰到的问题分享给大家,需要源码的请留下邮箱。
一、软件版本
1、 VS2010 32位 2、 PCL1.7.2 官网下载 pcl1.7.2.zip源代码 3、 第三方软件:(官网pcl 1.6对应的版本,不清楚的看后面的附图)
二、安装第三方软件
vtk先用官网的5.8,pcl编译完成后再安装vtk5.10。
三、编译安装pcl1.7.2
需要改一个cpp文件,把io\include\pcl\io\png_io.h文件报错地方”template <typename T>“的后四行注释掉,否则会出现错误“丢失 pcl_io_debug.dll”。 // PCL_DEPRECATED (template <typename T> void savePNGFile (conststd::string& file_name, const pcl::PointCloud<T>& cloud), // "pcl::io::savePNGFile<typename T> (file_name, cloud) isdeprecated, please use a new generic " // "function pcl::io::savePNGFile (file_name, cloud, field_name) with\"rgb\" as the field name." // );
四、编译安装vtk5.10
如果之前编译过vtk5.10,这一步可以省了。不过注意一点,编译Pcl时,环境变量vtk_Dir必须是vtk5.8的路径。
五、增加系统变量Path
【Path】 C:\Program Files (x86)\PCL\bin;C:\ProgramFiles (x86)\Eigen\bin;C:\Program Files (x86)\OpenNI\Bin;C:\Program Files(x86)\qhull\bin;C:\Program Files (x86)\VTK\bin;
六、新建mfc项目,设置目录和依赖项目
此处都用vtk5.10。
参考如下:
(1)包含目录 C:\Program Files(x86)\PCL\include\pcl-1.7 C:\Program Files (x86)\OpenNI\Include C:\Program Files (x86)\Boost\include C:\Program Files (x86)\Eigen\include C:\Program Files (x86)\flann\include C:\Program Files (x86)\qhull\include C:\Program Files(x86)\VTK\VTKsourcecode\Charts C:\Program Files(x86)\VTK\include\vtk-5.10
(2)库目录 C:\Program Files (x86)\PCL\lib C:\Program Files (x86)\OpenNI\Lib C:\Program Files (x86)\Boost\lib C:\Program Files (x86)\flann\lib C:\Program Files (x86)\qhull\lib C:\Program Files (x86)\VTK\lib\vtk-5.10 C:\Program Files(x86)\VTK\VTKbin\bin\Debug
(3)附加依赖项(vtk5.10.1) opengl32.lib pcl_kdtree_debug.lib pcl_io_debug.lib pcl_search_debug.lib pcl_segmentation_debug.lib pcl_features_debug.lib pcl_filters_debug.lib pcl_visualization_debug.lib pcl_common_debug.lib flann_cpp_s-gd.lib pcl_registration_debug.lib libboost_system-vc100-mt-gd-1_50.lib libboost_filesystem-vc100-mt-gd-1_50.lib libboost_date_time-vc100-mt-gd-1_50.lib libboost_iostreams-vc100-mt-gd-1_50.lib libboost_thread-vc100-mt-gd-1_50.lib vtkalglib.lib vtkCommon.lib vtkDICOMParser.lib vtkexoIIc.lib vtkexpat.lib vtkFiltering.lib vtkfreetype.lib vtkftgl.lib vtkGenericFiltering.lib vtkGeovis.lib vtkGraphics.lib vtkhdf5.lib vtkhdf5_hl.lib vtkHybrid.lib vtkImaging.lib vtkInfovis.lib vtkIO.lib vtkjpeg.lib vtklibxml2.lib vtkmetaio.lib vtkMFC.lib vtkNetCDF.lib vtkNetCDF_cxx.lib vtkpng.lib vtkproj4.lib vtkRendering.lib vtksqlite.lib vtksys.lib vtktiff.lib vtkverdict.lib vtkViews.lib vtkVolumeRendering.lib vtkWidgets.lib vtkzlib.lib
七、修改pcl源码和 田博士的MFC代码
1、std::max (),std::min()的问题,改成(std::max) ()… 2、pcl1.6升级到 pcl1.7.2 的部分库改动 Sensor_msgs/PointCloud2 —pcl/PCLPointCloud2 PointField —pcl/PCLPointField 3、转化成COFF错误 删除 C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe, 自动增加系统所有用户路径。
|