簡體   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'

我正在嘗試編譯Kintinuous使用過的pcl-1.7項目。 但是我遇到了一些錯誤。 我在Google上搜索了很長時間,但我仍然不知道。 我是編程的新手。 請幫我。 錯誤看起來像這樣:

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

提前致謝。

我在依賴flann的不同庫上有相同的問題,並通過https://github.com/mariusmuja/flann/issues/214修復

如果在一些opencv標頭之后包含flann標頭,並使用g++ -std=c++11 ,那么序列化代碼中就會出現一個神秘的錯誤。 更改包含順序可解決此問題(在所有opencv標頭之前包含flann標頭)。 #define USE_UNORDERED_MAP 1 ++ 11的情況下,似乎opencv標頭泄漏#define USE_UNORDERED_MAP 1 然后由原始flann庫中的lsh_table.h中的#if拾取。

解決方案是在OpenCV之前加入flann。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM