1

動的ライブラリを使用して Cocoa Framework を作成しました。このライブラリには C 関数が含まれています。フレームワークを別のプロジェクトにコピーし、うまくコンパイルしましたが、実行するとこのようなメッセージが表示されてクラッシュします。

warning: Unable to read symbols for /Library/Frameworks/NewtonGameDynamics.framework/Versions/A/NewtonGameDynamics (file not found).
warning: Unable to read symbols from "NewtonGameDynamics" (not yet mapped into memory).
[Switching to process 48902 thread 0x0]
dyld: Library not loaded: /Library/Frameworks/NewtonGameDynamics.framework/Versions/A/NewtonGameDynamics
  Referenced from: /Users/eonil/Library/Developer/Xcode/DerivedData/newton-integration-test-1-ddaxmlnzdnwstkfaiolnkygefbmp/Build/Products/Debug/newton-integration-test-1.app/Contents/MacOS/newton-integration-test-1
  Reason: image not found
(gdb) 

バイナリ ファイルは、コピーされたフレームワーク ディレクトリにあります。なぜこれが起こり、どうすればこれを回避できますか?

4

1 に答える 1

1

これは思ったよりやや複雑です。

問題は、フレームワークでバイナリ ファイルを見つけることです。だけで十分に見えます$(EXECUTABLE_PATH)。しかし、本当の問題は絶対パスでなければならないということです。

したがって、基本的な解決策は@executable_path/../Frameworks/$(EXECUTABLE_PATH). これは組み込みのプライベート フレームワークであり、実行中のアプリ バイナリからのパスはまさにそのためです。

INSTALL_PATH = @executable_path/../Frameworks
LD_DYLIB_INSTALL_NAME = @executable_path/../Frameworks/$(EXECUTABLE_PATH)
于 2011-05-07T20:01:39.243 に答える