0

私の共有ライブラリを使用している人の中には、ライブラリの読み込みに問題がある人がいます。ここで述べたように、私はすでに「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用にのみコンパイルされています)。

4

1 に答える 1

2

If your shared library depends on another shared library you should link against it. Then when your library is linked into some other executable/shared library that dependency will be automatically loaded and users don't need to explicitly link against that dependency.

The undefined symbol is

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

which might come from the intel-tbb library you mentioned. Since this a dependency of your code users expect you to properly declare that dependency by linking it into your library.

See e.g. this answer on how to do this with with GCC.

于 2012-12-15T12:59:15.450 に答える