加载共享库时未定义的符号"tbb internal Allocate"

Undefined symbol "tbb internal Allocate" when loading shared library

本文关键字:tbb internal Allocate 符号 共享 未定义 加载      更新时间:2023-10-16

一些使用我的共享库的人在加载它时遇到问题。我已经告诉他们安装"gcc-libs",如这里所述。

我还告诉他们自己编译共享库,但没有运气。

这个问题还有其他解决方案吗?

这是程序的日志文件,它试图在 CentOS6 上加载插件:

[23:16:57]   Failed (plugins/RouteConnectorPlugin.so: undefined symbol: _ZN3tbb8internal12NFS_AllocateEjjPv)
[23:16:57]  Loading plugin failed: RouteConnectorPlugin.so

该程序是开源的,位于此处,它是用 C 和 C++ 混合编写的(该程序仅针对 x86 编译)。

如果您的共享库依赖于另一个共享库,则应链接到它。然后,当您的库链接到其他某个可执行/共享库时,该依赖项将自动加载,用户无需显式链接到该依赖项。

未定义的符号是

$ c++filt _ZN3tbb8internal12NFS_AllocateEjjPv
tbb::internal::NFS_Allocate(unsigned int, unsigned int, void*)

这可能来自您提到的英特尔-TBB 库。由于这是代码的依赖项,因此用户希望您通过将依赖项链接到库中来正确声明该依赖项。

例如,请参阅有关如何使用 GCC 执行此操作的答案。