编译 affdex linux 示例应用程序时未定义对 process(std::__cxx11::basic_string ... ) 的引用

Undefined reference to process(std::__cxx11::basic_string ... ) when compiling affdex linux sample applications

我在尝试编译时遇到如下错误affdex sdk sample applications

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 引入了 new implementations of std::string and std::list. You can try the workaround 以查看您是否可以成功完成链接过程,但最安全的选择是回退到使用 GCC 4.8。

请注意,GCC 4.8 可以从 ubuntu 存储库中检索 ..