在编译affdex linux示例应用程序时未定义对进程(std :: __ cxx11 :: basic_string …)的引用

我尝试编译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

Solutions Collecting From Web of "在编译affdex linux示例应用程序时未定义对进程(std :: __ cxx11 :: basic_string …)的引用"

我最初的怀疑是,这个问题是试图编译应用程序使用一个新的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 repos中获取。