2011-07-15 2 views
6

が見つかりませんのdlopen()エラー画像は、私が最初は.dylibをロードし、次のコマンドを使用してlibFirst.dylibを呼び出すことができますソフトウェアを持っている

error warning: Ignored unknown object module at 0x129310 with type 0x8a8399 

dlerror: dlopen(/path/libSecond.dylib, 9): Library not loaded: libFirst.dylib 
    Referenced from: /path/libSecond.dylib 
    Reason: image not found 

私は何を得ることはありませんが、そのはlibFirst.dylibを言うことである:同じコマンドを使用して別のは.dylibをロードしますがlibSecond.dylibのために、この共有ライブラリのロードは私に私のXcodeコンソールに次の警告を与えます私はlibFirst.dylibの関数の中に入っていますが、これはどのようにすることができますか?

DYLD_LIBRARY_PATHのすべてのパスも正しく表示されます。

前もってありがとう、私はこれに数日間執着しています。

+0

あなたはstraceのようなものを試しましたか?特定のコールが失敗していることを具体的に表示するための詳細情報が表示される場合があります。 – Josh

+0

私のスタックトレースは、libFirst.dylib内の関数であるlibSecond.dylib上でCreateModuleと呼ばれるdlopenを呼び出す関数を示しています。 –

+0

スタックトレースではありません - straceはシステムトレースを表します。これは、ファイルを開く、iノードをstatiningするなどの関数呼び出しをトレースしています。あなたのOSが正確にどこにあるのかを明らかにするかもしれません。 – Josh

答えて

3

すべてのライブラリのインストール名を@ rpath/dylibName.dylibに変更してから、Xcodeで@loader_pathを使ってRunpath Searchのパスを設定して、使用していたすべての.dylibを見つけました。

+0

* -install_name *を使用してコマンドライン全体を与えることができますか? –

+1

こんにちは@MartinDelille。私は3年以上前にこれをやったので、正確なコマンドラインはありませんが、ここではそれを使う方法に関するブログがあります:http://log.zyxar.com/blog/2012/03/10/install-name -on-os-x / –

関連する問題