点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 2194|回复: 1

PCL1.7.2和MFC共同使用

[复制链接]
发表于 2015-4-9 11:34:51 | 显示全部楼层 |阅读模式
研究这个问题已经好久了,先是看到田博士发的帖子,求回复,但是发帖时间估计太久远了,迟迟得不到回复,最近加了PCL群,终于遇到知音发给了我一份。经过两天的修改,终于可以用了!
首先,从PCL1.6更新到PCL1.7.2,一个重大改变就是没有了std_msg和ros_msg,新的版本将其功能集成在相应pcl空间下,如
fromROSMsg->fromPCLPointCloud2
ros_msg::PointCloud2->pcl::PCLPointCloud2
代码基本就做了这两处修改。
其次是vtk的编译。我本来想用最新版本VTK6.20,但是加载后发现vtkpolyData居然没有Update()和input()了,不知道名字改成了什么,于是又重编译了5.10版的,编译过程中的问题就是将WINVER 0401改为0501,下面对应的0401也改为0501.cmake时不要忘记选择vtkMFC选项(先选择vtkGUIsupport,点击configure后再出现vtkMFC,选中)。
另外,我用的是vs2012,因为最终想和Kinect v2.0一起使用,所以编译器版本必须在2012以上。编译过程中出现两个警告,一个是fopen:
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
一个是
xutility(2176): error C4996: 'std::_Copy_impl': Function callwith parameters that may be unsafe - this call relies on the caller to checkthat the passed values are correct. To disable this warning, use-D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'CheckedIterators'
解决方法是属性->c/c++界面中:
在预处理器处添加_SCL_SECURE_NO_WARNINGS,在命令行添加 /D _CRT_SECURE_NO_WARNINGS
至此,编译终于通过!
感谢发给我代码的朋友!还有强烈建议代码升级后有个显著的变更说明!


回复

使用道具 举报

发表于 2016-11-11 20:48:19 | 显示全部楼层
楼主你好,按照楼主步骤pcl与MFC结合显示点云没有问题,但是当关闭窗口后,出现内存泄漏的情况,不知道楼主遇到这个问题了没?请问是怎么解决的?
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-4-28 01:29 , Processed in 1.755795 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表