我正在使用 OpenCV 2.4.2 和点云库 1.6.0。
我的程序工作正常,直到我添加该行...
#include <pcl/segmentation/segment_differences.h>
当我尝试编译时,这会导致错误。我明白...
Error 93 error C2872: 'flann' : ambiguous symbol C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl\kdtree\kdtree_flann.h 424
Error 94 error C2872: 'flann' : ambiguous symbol C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl\kdtree\kdtree_flann.h 425
Error 95 error C2872: 'flann' : ambiguous symbol C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl\kdtree\kdtree_flann.h 427
Error 96 error C2872: 'flann' : ambiguous symbol C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl\kdtree\kdtree_flann.h 514
Error 97 error C2872: 'flann' : ambiguous symbol C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl\kdtree\kdtree_flann.h 520
C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl/kdtree/kdtree_flann.h(520): error C2872: 'flann' : ambiguous symbol
could be 'flann'
or 'cv::flann'
所以看起来 OpenCV 附带的 Flann 文件与 PCL 中的 Flann 文件发生冲突。
有什么建议么?
Edit
这里有一个类似的问题PCL、OpenCV 和 flann 冲突 https://stackoverflow.com/questions/11918504/pcl-opencv-and-flann-conflict?rq=1但这是一个略有不同的错误......
Edit 2
所以在我之前的 main.cpp 文件中
使用命名空间 pcl;
使用命名空间 cv;
我将这两个注释掉并更新了程序以使用 cv::Mat 等。
但当我添加时,我在编译过程中仍然遇到错误...
#include <pcl/segmentation/segment_differences.h>
C:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6\pcl/kdtree/kdtree_flann.h(520): error C2872: 'flann' : ambiguous symbol
could be 'flann'
or 'cv::flann'
我刚刚尝试将 include\opencv2\flann\ 重命名为 include\opencv2\flanncv\ 并将一堆 opencv 标头中的包含更新到这个新的 flanncv 目录。我仍然收到上述错误...
因此,无需重建即可解决此问题的方法是向其添加空命名空间
改变实例
弗兰::东西
到
::弗兰::东西
我认为它有效地告诉它使用全局名称空间而不是 cv 名称空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)