5

だから、私はプロジェクトを構築していて、それはコンパイルされたライブラリ(.dylibまたは.so)からの関数を使用しています。適切な場所にヘッダーとライブラリファイル(これはすべてQtRootの一部です)がありますが、Xcodeでプロジェクトをビルドしようとすると、デバッガーエラーが発生します。

dyld:ライブラリがロードされていません:@ rpath / libRIO.so参照元:/Users/paulthompson/Documents/Programming/Build Products / Debug / MacHeliosSim.app / Contents / MacOS / MacHeliosSim理由:イメージが見つかりませんsharedlibrary apply-load-rules allデータフォーマッタは一時的に利用できません。「続行」後に再試行します。(現在、ローダーを呼び出すことはできません。ロックされています。)

これで、ビルドされたプログラム自体は、Finderから開くと問題なく実行されますが、Xcodeから実行しようとすると、私はそれを妨害します。このrpathとは何ですか。また、Xcode自体がライブラリの場所を認識しているにもかかわらず、デバッガーがライブラリを検出できないのはなぜですか。また、Finderから実行すると、プログラムもライブラリを検出できるようです。

4

2 に答える 2

3

http://en.wikipedia.org/wiki/Rpath_(リンク)

これは、共有ライブラリを見つけるためにバイナリに格納されているパスです。Finderからアプリを起動すると、おそらくアプリバンドルですか?アプリ バンドルが作成されると、共有ライブラリがアプリ バンドルにコピーされ、バンドルされたライブラリへのパスが相対パスになります。(@executable_path/../Frameworks/foobar)。どのようにして Finder から動作するバージョンを作成しましたか?

上記のエラーは、リンク時または xcode からアプリケーションを起動したときに発生しますか? (後者の場合、DYLD_LIBRARY_PATH で試してください)

また、.dylib の代わりに libRIO の .so 拡張子が少し怪しいようです。

于 2010-08-12T06:42:20.813 に答える
2

次の (qt 作成者での) 例のように、リンク段階で rpath を追加します。

LIBS += -L/usr/local/root/lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lpthread -Wl, -rpath,/usr/local/root/lib -lm -ldl

于 2012-01-26T17:18:11.150 に答える