Неопределенная ссылка на процесс (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

6

Решение

Первоначально я подозревал, что проблема заключается в попытке скомпилировать приложения, используя более новый 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.

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]