简体   繁体   English

flann / util / serialization.h类std :: unordered_map <unsigned int, std::vector<unsigned int> &gt;&#39;没有名为&#39;serialize&#39;的成员

[英]flann/util/serialization.h class std::unordered_map<unsigned int, std::vector<unsigned int> >' has no member named 'serialize'

I am trying to compile a project Kintinuous used pcl-1.7. 我正在尝试编译Kintinuous使用过的pcl-1.7项目。 However I got some errors. 但是我遇到了一些错误。 I am searching for a long time on Google, but I still have no idea. 我在Google上搜索了很长时间,但我仍然不知道。 I am a newcomer to programming. 我是编程的新手。 Please help me. 请帮我。 The errors look like this: 错误看起来像这样:

In file included from /usr/include/flann/util/matrix.h:35:0,
                     from /usr/include/flann/flann.hpp:41,
                     from /usr/include/pcl-1.7/pcl/kdtree/flann.h:50,
                     from /usr/include/pcl-1.7/pcl/kdtree/kdtree_flann.h:45,
                     from /data2/houzhixing/Kintinuous/src/backend/DeformationGraph.h:27,
                     from /data2/houzhixing/Kintinuous/src/backend/DeformationGraph.cpp:19:
    /usr/include/flann/util/serialization.h: In instantiation of 'static void flann::serialization::access::serialize(Archive&, T&) [with Archive = flann::serialization::LoadArchive; T = std::unordered_map<unsigned int, std::vector<unsigned int> >]':
    /usr/include/flann/util/serialization.h:26:30:   required from 'void flann::serialization::serialize(Archive&, T&) [with Archive = flann::serialization::LoadArchive; T = std::unordered_map<unsigned int, std::vector<unsigned int> >]'
    /usr/include/flann/util/serialization.h:35:40:   required from 'static void flann::serialization::Serializer<T>::load(InputArchive&, T&) [with InputArchive = flann::serialization::LoadArchive; T = std::unordered_map<unsigned int, std::vector<unsigned int> >]'
    /usr/include/flann/util/serialization.h:276:61:   required from 'Archive& flann::serialization::InputArchive<Archive>::operator&(T&) [with T = std::unordered_map<unsigned int, std::vector<unsigned int> >; Archive = flann::serialization::LoadArchive]'
    /usr/include/flann/util/lsh_table.h:319:10:   required from 'void flann::lsh::LshTable<ElementType>::serialize(Archive&) [with Archive = flann::serialization::LoadArchive; ElementType = float]'
    /usr/include/flann/util/serialization.h:18:9:   required from 'static void flann::serialization::access::serialize(Archive&, T&) [with Archive = flann::serialization::LoadArchive; T = flann::lsh::LshTable<float>]'
    /usr/include/flann/util/serialization.h:26:30:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
    /usr/include/flann/util/serialization.h:18:9:   required from 'static void flann::serialization::access::serialize(Archive&, T&) [with Archive = flann::serialization::LoadArchive; T = flann::LshIndex<flann::L2_Simple<float> >]'
    /usr/include/flann/util/serialization.h:26:30:   required from 'void flann::serialization::serialize(Archive&, T&) [with Archive = flann::serialization::LoadArchive; T = flann::LshIndex<flann::L2_Simple<float> >]'
    /usr/include/flann/util/serialization.h:35:40:   required from 'static void flann::serialization::Serializer<T>::load(InputArchive&, T&) [with InputArchive = flann::serialization::LoadArchive; T = flann::LshIndex<flann::L2_Simple<float> >]'
    /usr/include/flann/util/serialization.h:276:61:   required from 'Archive& flann::serialization::InputArchive<Archive>::operator&(T&) [with T = flann::LshIndex<flann::L2_Simple<float> >; Archive = flann::serialization::LoadArchive]'
    /usr/include/flann/algorithms/lsh_index.h:204:9:   required from 'void flann::LshIndex<Distance>::loadIndex(FILE*) [with Distance = flann::L2_Simple<float>; FILE = _IO_FILE]'
    /data2/houzhixing/Kintinuous/src/backend/DeformationGraph.cpp:1054:1:   required from here
    /usr/include/flann/util/serialization.h:18:9: error: 'class std::unordered_map<unsigned int, std::vector<unsigned int> >' has no member named 'serialize'
             type.serialize(ar);
             ^
    /usr/include/flann/util/serialization.h: In instantiation of 'static void flann::serialization::access::serialize(Archive&, T&) [with Archive = flann::serialization::SaveArchive; T = std::unordered_map<unsigned int, std::vector<unsigned int> >]':
    /usr/include/flann/util/serialization.h:26:30:   required from 'void flann::serialization::serialize(Archive&, T&) [with Archive = flann::serialization::SaveArchive; T = std::unordered_map<unsigned int, std::vector<unsigned int> >]'
    /usr/include/flann/util/serialization.h:40:56:   required from 'static void flann::serialization::Serializer<T>::save(OutputArchive&, const T&) [with OutputArchive = flann::serialization::SaveArchive; T = std::unordered_map<unsigned int, std::vector<unsigned int> >]'
    /usr/include/flann/util/serialization.h:294:61:   required from 'Archive& flann::serialization::OutputArchive<Archive>::operator&(const T&) [with T = std::unordered_map<unsigned int, std::vector<unsigned int> >; Archive = flann::serialization::SaveArchive]'
    /usr/include/flann/util/lsh_table.h:319:10:   required from 'void flann::lsh::LshTable<ElementType>::serialize(Archive&) [with Archive = flann::serialization::SaveArchive; ElementType = float]'
    /usr/include/flann/util/serialization.h:18:9:   required from 'static void flann::serialization::access::serialize(Archive&, T&) [with Archive = flann::serialization::SaveArchive; T = flann::lsh::LshTable<float>]'
    /usr/include/flann/util/serialization.h:26:30:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
    /usr/include/flann/util/serialization.h:18:9:   required from 'static void flann::serialization::access::serialize(Archive&, T&) [with Archive = flann::serialization::SaveArchive; T = flann::LshIndex<flann::L2_Simple<float> >]'
    /usr/include/flann/util/serialization.h:26:30:   required from 'void flann::serialization::serialize(Archive&, T&) [with Archive = flann::serialization::SaveArchive; T = flann::LshIndex<flann::L2_Simple<float> >]'
    /usr/include/flann/util/serialization.h:40:56:   required from 'static void flann::serialization::Serializer<T>::save(OutputArchive&, const T&) [with OutputArchive = flann::serialization::SaveArchive; T = flann::LshIndex<flann::L2_Simple<float> >]'
    /usr/include/flann/util/serialization.h:294:61:   required from 'Archive& flann::serialization::OutputArchive<Archive>::operator&(const T&) [with T = flann::LshIndex<flann::L2_Simple<float> >; Archive = flann::serialization::SaveArchive]'
    /usr/include/flann/algorithms/lsh_index.h:198:9:   required from 'void flann::LshIndex<Distance>::saveIndex(FILE*) [with Distance = flann::L2_Simple<float>; FILE = _IO_FILE]'
    /data2/houzhixing/Kintinuous/src/backend/DeformationGraph.cpp:1054:1:   required from here
    /usr/include/flann/util/serialization.h:18:9: error: 'class std::unordered_map<unsigned int, std::vector<unsigned int> >' has no member named 'serialize'
    make[2]: *** [CMakeFiles/backend.dir/backend/DeformationGraph.cpp.o] Error 1
    make[1]: *** [CMakeFiles/backend.dir/all] Error 2
    make: *** [all] Error 2

Thanks in advance. 提前致谢。

I had same issue on different library that depends on flann and fixed by https://github.com/mariusmuja/flann/issues/214 我在依赖flann的不同库上有相同的问题,并通过https://github.com/mariusmuja/flann/issues/214修复

We had a mysterious error in the serialization code if we included the flann headers after some opencv headers and used g++ -std=c++11 . 如果在一些opencv标头之后包含flann标头,并使用g++ -std=c++11 ,那么序列化代码中就会出现一个神秘的错误。 Changing the include order fixed the issue (including flann headers before any opencv headers). 更改包含顺序可解决此问题(在所有opencv标头之前包含flann标头)。 It seems that opencv headers leak #define USE_UNORDERED_MAP 1 in case of std ≥ C++11. #define USE_UNORDERED_MAP 1 ++ 11的情况下,似乎opencv标头泄漏#define USE_UNORDERED_MAP 1 This then gets picked up by the #if in lsh_table.h in the original flann library. 然后由原始flann库中的lsh_table.h中的#if拾取。

The solution is to include flann before OpenCV. 解决方案是在OpenCV之前加入flann。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 排序std :: unordered_map <std::string, std::atomic<unsigned int> &gt;按值 - Sort std::unordered_map<std::string, std::atomic<unsigned int>> by values 错误:&#39;类 std::unique_ptr <std::set<long unsigned int> &gt;&#39; 没有名为 &#39;size&#39; 的成员 - error: 'class std::unique_ptr<std::set<long unsigned int> >' has no member named 'size' 在std :: unordered_map上进行迭代 <int, std::vector<Element> &gt; - Iterator over std::unordered_map<int, std::vector<Element>> g++:'类标准::map <int, std::vector<std::vector<int> &gt; &gt;' 没有名为 'insert_or_assign' 的成员</int,> - g++: 'class std::map<int, std::vector<std::vector<int> > >' has no member named 'insert_or_assign' 使用boost序列化std :: unordered_map <int,std :: unordered_set <int >> - serialize std::unordered_map < int, std::unordered_set<int> > with boost unordered_map 中的段错误<int, std::vector<double> &gt; - Seg fault in unordered_map <int, std::vector<double>> 使用带预分配 std::unordered_map 的嵌套向量快速构造 unordered_map <int, vector<thing *> >?</int,> - Fast construction of unordered_map with nested vector with preallocation std::unordered_map<int, vector<Thing *>>? 如何在std :: unordered_map中更新向量 <std::string, std::vector<int> &gt;没有复制? - How to update the vectors in a std::unordered_map<std::string, std::vector<int>> without copying? &#39;struct std :: pair <int, int> &#39;没有名为&#39;serialize&#39;的成员 - 'struct std::pair<int, int>' has no member named 'serialize' 对std :: unordered_map进行Boost :: serialization <double, std::vector<double> &gt; - Boost::serialization of an std::unordered_map<double, std::vector<double>>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM