对符号“_ZN3tbb8internal12NFS_AllocateEmmPv”的未定义引用

undefined reference to symbol '_ZN3tbb8internal12NFS_AllocateEmmPv'

我正在尝试使用 OpenCV 在 ubuntu 中进行 运行 多流。我试过这样编译:

g++ -std=c++11 MultiCamera.cpp -o MultiCamera `pkg-config opencv --cflags --libs` -lz -lrt -lm -lpthread

我收到以下错误:

/usr/bin/ld: /tmp/ccylvz8g.o: undefined reference to symbol '_ZN3tbb8internal12NFS_AllocateEmmPv'
//usr/lib/x86_64-linux-gnu/libtbb.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我在询问之前在 SO 上搜索了这个,大多数答案只是指向在项目设置中正确链接库,我已经做到了,正如上面的代码所示但错误仍然存​​在。

我是不是漏掉了什么?

$ c++filt _ZN3tbb8internal12NFS_AllocateEmmPv
tbb::internal::NFS_Allocate(unsigned long, unsigned long, void*)

你的程序有一个未定义的引用 函数 tbb::internal::NFS_Allocate(unsigned long, unsigned long, void*)。 此函数定义在 Intel TBB library 但你没有link那个图书馆。

您发布的 linker 诊断指出了您使用的共享库 已省略 link:

//usr/lib/x86_64-linux-gnu/libtbb.so.2: error adding symbols: DSO missing from command line

DSO = 动态共享对象。 Link 通过将 -ltbb 添加到您的 link 年龄选项。