rmsalinas / fbow

FBOW (Fast Bag of Words) is an extremmely optimized version of the DBow2/DBow3 libraries.
559 stars 141 forks source link

Compile error #1

Open jingpang opened 7 years ago

jingpang commented 7 years ago

Hi, i got the compile error below, do you have any advice? (Ubuntu 14.04 64bit, opencv3.2.)

And another question is about '* Not yet implemented indexing of images. '. Does this mean that it can not be used by ORB-SLAM for the moment (as it needs invert index from descriptor to image)?

Regards.

Scanning dependencies of target fbow [ 12%] Building CXX object src/CMakeFiles/fbow.dir/fbow.cpp.o In file included from /opt/opencv3.2/include/opencv2/core/mat.hpp:3518:0, from /opt/opencv3.2/include/opencv2/core.hpp:59, from /home/jp/Libraries/fbow/src/fbow.h:5, from /home/jp/Libraries/fbow/src/fbow.cpp:1: /opt/opencv3.2/include/opencv2/core/mat.inl.hpp: In instantiation of ‘const _Tp cv::Mat::ptr(int) const [with _Tp = __vector(4) float]’: /home/jp/Libraries/fbow/src/fbow.h:336:13: required from ‘fbow::fBow fbow::Vocabulary::_transform(const cv::Mat&) [with Computer = fbow::Vocabulary::L2_sse3_16w]’ /home/jp/Libraries/fbow/src/fbow.cpp:85:83: required from here /opt/opencv3.2/include/opencv2/core/mat.inl.hpp:836:1: error: ‘const _Tp cv::Mat::ptr(int) const [with _Tp = vector(4) float]’ conflicts with a previous declaration } ^ /opt/opencv3.2/include/opencv2/core/mat.inl.hpp:832:12: note: previous declaration ‘const _Tp* cv::Mat::ptr(int) const [with _Tp = vector(8) float]’ const _Tp Mat::ptr(int y) const ^ /opt/opencv3.2/include/opencv2/core/mat.inl.hpp:832:12: note: -fabi-version=6 (or =0) avoids this error with a change in mangling In file included from /home/jp/Libraries/fbow/src/fbow.cpp:1:0: /home/jp/Libraries/fbow/src/fbow.h: In instantiation of ‘T fbow::Vocabulary::Block::getFeature(int) [with T = __vector(4) float]’: /home/jp/Libraries/fbow/src/fbow.h:345:82: required from ‘fbow::fBow fbow::Vocabulary::_transform(const cv::Mat&) [with Computer = fbow::Vocabulary::L2_sse3_16w]’ /home/jp/Libraries/fbow/src/fbow.cpp:85:83: required from here /home/jp/Libraries/fbow/src/fbow.h:155:125: error: ‘T fbow::Vocabulary::Block::getFeature(int) [with T = __vector(4) float]’ conflicts with a previous declaration template inline TgetFeature(int i){return (T) (_blockstart+_feature_off_start+i_desc_size_bytes_wp);} ^ /home/jp/Libraries/fbow/src/fbow.h:155:40: note: previous declaration ‘T fbow::Vocabulary::Block::getFeature(int) [with T = __vector(8) float]’ template inline TgetFeature(int i){return (T) (_blockstart+_feature_off_start+i_desc_size_bytes_wp);} ^ /home/jp/Libraries/fbow/src/fbow.h:155:40: note: -fabi-version=6 (or =0) avoids this error with a change in mangling make[2]: [src/CMakeFiles/fbow.dir/fbow.cpp.o] Error 1 make[1]: [src/CMakeFiles/fbow.dir/all] Error 2 make: *** [all] Error 2

rmsalinas commented 7 years ago

The problem is with the compiler version that is not allowing this type of definitions . Version g++ >5 solves the problem. It is somehow related to -fabi-version=6.