Конфликт объявления из-за другой версии opencv при компиляции - PullRequest
0 голосов
/ 17 июня 2019

Я получаю следующую ошибку при попытке собрать пакет lsd-slam_noros. В целом этот пакет зависит от двух других пакетов openFABmap и g2o, оба компилируются без ошибок. При компиляции модуля lsd-slam я получаю следующую ошибку.

In file included from /usr/local/include/opencv2/features2d/features2d.hpp:48:0,
                 from /home/vivJune_2019/lsd_slam_noros-master/thirdparty/openFabMap/include/bowmsctrainer.hpp:58,
                 from /home/vivJune_2019/lsd_slam_noros-master/thirdparty/openFabMap/include/openfabmap.hpp:59,
                 from /home/vivJune_2019/lsd_slam_noros-master/lsd_slam/global_mapping/fab_map.cc:41:
/usr/local/include/opencv2/features2d.hpp:231:19: error: conflicting declaration ‘typedef class cv::Feature2D cv::FeatureDetector’
 typedef Feature2D FeatureDetector;
                   ^
In file included from /home/vivJune_2019/lsd_slam_noros-master/lsd_slam/global_mapping/fab_map.cc:22:0:
/home/vivJune_2019/lsd_slam_noros-master/lsd_slam/global_mapping/fab_map.h:29:7: note: previous declaration as ‘class cv::FeatureDetector’
 class FeatureDetector;

Ошибка указывает на проблему с объявлением в файле bowmsctrainer.hpp по сравнению с объявлением в fab_map.h (?). Я не уверен, как решить этот конфликт декларации.

Пожалуйста, помогите!

Вот более полный журнал процесса сборки (bowmsctrainer собран до текущей части)

Scanning dependencies of target openFABMAP
[  2%] Building CXX object thirdparty/openFabMap/CMakeFiles/openFABMAP.dir/src/inference.cpp.o
[  5%] Building CXX object thirdparty/openFabMap/CMakeFiles/openFABMAP.dir/src/chowliutree.cpp.o
[  8%] Building CXX object thirdparty/openFabMap/CMakeFiles/openFABMAP.dir/src/msckd.cpp.o
[ 11%] Building CXX object thirdparty/openFabMap/CMakeFiles/openFABMAP.dir/src/bowmsctrainer.cpp.o
[ 14%] Building CXX object thirdparty/openFabMap/CMakeFiles/openFABMAP.dir/src/fabmap.cpp.o
[ 17%] Linking CXX static library ../../../lib/libopenFABMAP.a
[ 17%] Built target openFABMAP
Scanning dependencies of target lsd_slam
[ 20%] Building CXX object lsd_slam/CMakeFiles/lsd_slam.dir/depth_estimation/depth_map_pixel_hypothesis.cc.o
[ 22%] Building CXX object lsd_slam/CMakeFiles/lsd_slam.dir/depth_estimation/depth_map.cc.o
[ 25%] Building CXX object lsd_slam/CMakeFiles/lsd_slam.dir/global_mapping/trackable_key_frame_search.cc.o
[ 28%] Building CXX object lsd_slam/CMakeFiles/lsd_slam.dir/global_mapping/g2o_type_sim3_sophus.cc.o
[ 31%] Building CXX object lsd_slam/CMakeFiles/lsd_slam.dir/global_mapping/fab_map.cc.o

In file included from /usr/local/include/opencv2/features2d/features2d.hpp:48:0,
                 from /home/vivJune_2019/lsd_slam_noros-master/thirdparty/openFabMap/include/bowmsctrainer.hpp:58,
                 from /home/vivJune_2019/lsd_slam_noros-master/thirdparty/openFabMap/include/openfabmap.hpp:59,
                 from /home/vivJune_2019/lsd_slam_noros-master/lsd_slam/global_mapping/fab_map.cc:41:
/usr/local/include/opencv2/features2d.hpp:231:19: error: conflicting declaration ‘typedef class cv::Feature2D cv::FeatureDetector’
 typedef Feature2D FeatureDetector;
                   ^
In file included from /home/vivJune_2019/lsd_slam_noros-master/lsd_slam/global_mapping/fab_map.cc:22:0:
/home/vivJune_2019/lsd_slam_noros-master/lsd_slam/global_mapping/fab_map.h:29:7: note: previous declaration as ‘class cv::FeatureDetector’
 class FeatureDetector;

Соответствующее (частичное) содержание fab_map.h (вероятно):

#include <opencv2/core/core.hpp>

namespace of2 {
class FabMap;
}
namespace cv {
    class FeatureDetector;
    class BOWImgDescriptorExtractor;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...