解决PCl库依赖的flann与Opencv的冲突问题:

程序编译会定位到错误:flann/util/serialization.h中std::unordered_map no member named serialize()。
参考issue做了许多尝试最终解决了。
主要问题出在opencv头文件中的一些宏定义和flann库中的冲突,最后解决方案就是从自己的main函数所在文件中开始一步步查看头文件的包含顺序,一定要保证pcl库中依赖的flann在opencv头文件之前先包含进去。
比如我遇到这个问题的解决方法如下:

#include 
#include 
#include "icp.hpp"
#include "depth_utils.hpp"

改为

#include 
#include "icp.hpp"
#include "depth_utils.hpp"
#include 

即可。因为我的icp.h头文件包含了许多pcl头文件并且依赖了flann.

补充:因为我在进行点云处理时用到了kdtree,这个会依赖flann库。因为我这边把pcl和flann都根据自己的要求做了简化,作为一个第三方源码库可以对其内容随意添加修改,我尝试过在flann库中的serialization.h中添加#include,或者在lsh_table.h中添加宏定义#define USE_UNORDERED_MAP 1 都不解决问题。

你可能感兴趣的:(C++知识点,Ubuntu,opencv,c++,计算机视觉,自动驾驶)