Скопированные поиски Cocoa Framework / Библиотека / Каркасы / ... только.Как я могу заставить его искать бинарный файл внутри себя? - PullRequest
1 голос
/ 07 мая 2011

Я сделал 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) 

Бинарный файл находится в скопированном каталоге фреймворка. Почему это происходит и как я могу избежать этого?

1 Ответ

1 голос
/ 08 мая 2011

Это несколько сложнее, чем я думал.

Проблема с поиском двоичного файла в фреймворке. Это выглядит достаточно только с $(EXECUTABLE_PATH). Но настоящая проблема в том, что это должен быть абсолютный путь.

Итак, основным решением является @executable_path/../Frameworks/$(EXECUTABLE_PATH). Потому что это встроенная частная структура , и путь от запуска двоичного файла приложения - это просто.

INSTALL_PATH = @executable_path/../Frameworks
LD_DYLIB_INSTALL_NAME = @executable_path/../Frameworks/$(EXECUTABLE_PATH)
...