小编典典

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

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


阅读 596

收藏
2020-06-03

共1个答案

小编典典

我最初的怀疑是,问题是尝试使用比sdk(gcc v4.8)更高的GCC或GLIBCXX来编译应用程序。

错误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。

请注意,可以从ubuntu repos ..检索GCC 4.8。

2020-06-03