Я столкнулся со следующей ошибкой, когда пытался скомпилировать образцы приложений 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
Первоначально я подозревал, что проблема заключается в попытке скомпилировать приложения, используя более новый GCC или вернее GLIBCXX, чем то, с чем скомпилирован SDK (gcc v4.8).
Сообщение об ошибке относится к неопределенной функции, которую компилятор не может найти ..
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.
Других решений пока нет …