PCL RSS2011_Feature源码在PCL1.9.1 VS2017环境下Bug修改记录

这部分源码中很好的展现了调用PCL库中各个模块用于实现点云拼接,但源码由于是2011年的版本,PCL库有所更新,现在编译会存在一些问题,记录解决办法如下:

问题1:E0312    不存在用户定义的从 “boost::shared_ptr<pcl::KdTreeFLANN<pcl::PointXYZRGB, flann::L2_Simple>>” 到 “const boost::shared_ptr<pcl::search::Searchpcl::PointXYZRGB>” 的适当转换

解决思路:刚开始我认为只是由于不能传递非const实参到const形参,所以加了const进行强制转换,结果还是不行,const关键词的相关知识理解还不到位;
后续直接将错误提示进行google搜索,未找到合适的解决办法;突然想到把错误行代码直接google搜索,说不定就有相同功能的不同实现代码可以替代,或是有作者给出解决方案,最后在2014年的一个pcl_tutorial中找到了后续PCL库版本中的kdtree搜索实现代码,刚开始只是更换错误部分,仅将pcl::KdTreeFLANN替换为pcl::search::KdTree,该错误解决。

问题2:错误    C4996    ‘vtkMapper::ImmediateModeRenderingOff’: 被声明为已否决

解决思路:直接百度错误代码,有两种解决办法:
1、将属性——C/C++——常规中的sdl检查改为否;参考链接:错误4996

2、在程序代码最前面添加 #pragma warning(disable: 4996)(在程序代码最前面添加后未通过,有知道原因的请留言指正,谢谢!) 参考链接:错误4996(2)

问题3:错误    C2440    “初始化”: 无法从“Y *”转换为“pcl::search::KdTree<pcl::PointXYZRGB,pcl::KdTreeFLANN<PointT,flann::L2_Simple>> *”

解决思路:刚开始我以为是定义指针未初始化,更改后未果,查看错误解释发现是问题1中更改的部分,怀疑是虽然编译能通过了,但是还没有改到位,所以根据pcl_tutorial中的kd_tree搜索调用方法进行完全更改,最终完全编译通过。

收获:折腾了一下午错误之后,对PCL库的调用的理解有所增强,同时也意识到自己C++有些知识方面的欠缺,比如:智能指针,const语法的更多方面等,后续还需加强。同时,PCL库是一直处于更新状态的,可能原先的有些实现代码在最新的PCL库下运行会出现问题,虽然原先的实现方式还保留者,但是后续修改的新功能是基于更新后的PCL库的,可能在调用时存在偏差,在借鉴原先代码时需注意进行适当修改。

文中的两个参考文档可到博主CSDN处下载。
--------------------- 
作者:better_3man 
来源:CSDN 
原文:https://blog.csdn.net/better_3man/article/details/90080832 
版权声明:本文为博主原创文章,转载请附上博文链接!

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页