Linux(ubuntu)システムにプラグイン(動的共有ライブラリ)を使用した独自のプログラムがあります。私のライブラリ (プラグイン) は OpenCV を使用しています (あまり重要ではないかもしれません)。
私のプラグインは /usr/local/lib/mysoft/ にあります。
ライブラリを使用してもプログラムを正常にコンパイルし、正常にインストールされたので、この時点まではすべて問題ないようです。
プログラムを実行すると、構成ファイルに基づいてこれらのライブラリの束が読み込まれます。正常にロードされたライブラリがいくつかありますが、1 つのライブラリをロードできません。ロード時にエラーが発生します(ライブラリを開くために dlopen() を使用しました):
/usr/local/lib/mysoft/libMyPlugin2.so: undefined symbol: _ZN2cv6resizeERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi
Segmentation fault (core dumped)
Tue Nov 20 19:11:29 CET 2012
OpenCV の一部である cv::resize を見つけるには明らかにいくつかの問題がありますが、その理由はわかりません。
次のことを確認しました。
- OpenCV は、他のライブラリも同様に使用し、問題なくロードされるため、おそらく正しくインストールされています。
- 私のプログラム、libMyPlugin2.soまたはOpenCVの依存関係はありません(lddでチェック)
- すべてのライブラリとバイナリのアーキテクチャは同じようです (objdump -f で確認しました)
誰かが私が間違っていることを知っていますか?
この投稿は非常に関連性があるようですが、それでも役に立ちませんでした: Linux shared library that uses a shared library undefined symbol