dlopenは、ファイルが正しいパスにあるときにファイルが見つからない場合に失敗します
質問
パッケージのライブラリディレクトリにインストールされているLibtoolを使用して構築されたライブラリがあります。 /usr/local/lib/myprog/libmylib.so
. 。 Libltdlを使用してコード内のライブラリを動的にロードしています。このライブラリを1つのマシンにロードしようとすると、正常に機能します。別の場合、同じビルドとライブラリが同じ場所にインストールされている場合、「ファイルが見つかりません」エラーが表示されます。
私が電話した場合 lt_dlforeachfile
直前 lt_dlopenext
(ライブラリをロードするために使用します)、それから私が必要なライブラリが検索パスで見つかったことをファイル名を印刷することで見ることができます。しかし、その後、すぐにロードすると、「ファイルが見つかりません」エラーが失敗します。助言がありますか?
アップデート
私は使用に切り替えを試みました dlopen
ライブラリへの絶対パスを明示的に指定します。これはまだ一部のシステムで機能し、他のシステムでは機能しません。
解決
Libltdlが実際のエラーを隠していることが判明しました。 「ファイルが見つかっていない」は、私が読み込んでいたライブラリが依存していた別のライブラリからのものでした。使用するときにこれを発見しました dlerror()
エラーメッセージを印刷します。不足しているライブラリをインストールした後、すべてが順調です!
所属していません StackOverflow