Dyld: библиотека не загружена Ошибка Mac OS - PullRequest
5 голосов
/ 04 июня 2010

Hoookay,

Итак, я знаю, что вот-вот получу дюжину ответов «загрузи пустышку», но здесь идет ...

junk.framework экспортирует некоторые объекты другого проекта (junk.app), поэтому я могу использовать его на узле remote.app в кластере. Я могу скомпилировать junk.framework (который, как я понимаю, больше ничего не значит с динамической загрузкой) и скомпилировать и связать remote.app с junk.framework.

Однако, когда я запускаю remote.app, я получаю эту прекрасную жемчужину ошибки:

dyld: Library not loaded: @executable_path/../Frameworks/libtiff.dylib
  Referenced from: /Users/slate/Documents/junk/build/Development/junk.framework/Versions/A/junk
  Reason: image not found

Я думаю, что происходит то, что junk.framework загружает libtiff.dylib из определенного места и не может его найти. junk.framework - еще один проект, над которым я работаю, и который я только что собрал (наконец).

Когда я get info на libtiff.dylib в моей нежелательной цели, он дает мне /Users/slate/Documents/osirix/osirix/Binaries/LibTiff/libtiff.dylib в качестве пути ... и я выбрал absolute path. Так почему же его там не ищут?

Э-э ... почему он смотрит на @executable_path /../ ???? Где же эта настройка, чтобы я мог ее изменить?

Редактировать ---

otool -L дает мне это:

/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 677.26.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 949.54.0)
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 12.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
@executable_path/../Frameworks/libtiff.dylib (compatibility version 11.0.0, current version 11.4.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/System/Library/Frameworks/QTKit.framework/Versions/A/QTKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 1327.73.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 32.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 476.19.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 34.0.0)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)

1 Ответ

9 голосов
/ 04 июня 2010

Параметр @executable_path был указан при сборке libtiff.dylib. (Если вы создаете свой собственный dylib или framework, это параметр сборки каталога установки (INSTALL_PATH).) Его можно изменить командой install_name_tool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...