Неопределенная ссылка на процесс (std:: cxx11::basic string...) при компиляции примеров приложений affdex linux

я столкнулся со следующей ошибкой, когда пытался скомпилировать примеры приложений affdex sdk

Linking CXX executable video-demo
CMakeFiles/video-demo.dir/video-demo.cpp.o: In function 'main':
video-demo.cpp:(.text+0x11cb): undefined reference to 
affdex::VideoDetector::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
collect2: error: ld returned 1 exit status

Я использую GCC 5.2.1

1 ответов


мое первоначальное подозрение состояло в том, что проблема заключается в попытке скомпилировать приложения с помощью более нового GCC или, скорее, GLIBCXX, чем то, с чем скомпилирован sdk (gcc v4.8).

ошибка msg относится к неопределенной функции, которую компилятор не может найти ..

undefined reference to `affdex::VideoDetector::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)

проблема здесь заключается в определении типа параметра (std:: string) .. компилятор ищет:

std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >

но, фактический тип определения параметра в скомпилированная библиотека..

std::basic_string<char, std::char_traits<char>, std::allocator<char> >

как оказалось, GCC 5 представил новые реализации std:: string и std::list. Вы можете попробовать обходной путь здесь чтобы увидеть, можете ли вы успешно завершить процесс связывания, но самый безопасный вариант-вернуться к использованию GCC 4.8.

Примечание, GCC 4.8 можно получить из репозиториев ubuntu ..