У меня проблема с развертыванием фреймворков Qt с моим приложением Mac, и я надеюсь, что некоторые из них поймут, почему я получаю эту ошибку, когда запускаю приложение на чистом Mac, то есть не для разработчика Mac.
ОС: 10.7 .2 и использование XCode
Сообщение об ошибке:
Library not loaded: @loader_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore
Referenced from:/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/../Frameworks/../Frameworks/QtXml.framework/Versions/4/QtXml
Очевидно, что что-то не так, поскольку на QtXml ссылаются из /../Frameworks/../Frameworks, которого не существует.
Это настройка: у меня есть dylib, который использует QtCore и QtXml (не по моему выбору, но сейчас мне нужны эти две платформы), dylib используется в NSBundle, который загружается основным приложением, комплект находится в папке ресурсов. Dylib перемещается посредством фазы копирования файлов в папку Contents / Frameworks, а с помощью otool имя_установки устанавливается в (как указано http://doc.qt.digia.com/4.3/deployment-mac.html):
@loader_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore
@loader_path/../Frameworks/QtXml.framework/Versions/4/QtXml
затем каркасы Qt перемещаются в Contents / Frameworks, и для install_name of устанавливается значение:
@executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore
и для QtXml
@executable_path /../ Каркасы / QtXml.framework / Версии / 4 / QtXml
со ссылкой на QtCore:
@executable_path /../ Каркасы / QtCore.framework / Версии / 4,0 / QtCore
Теперь, когда я запускаю приложение на Mac разработчика, оно четко работает, так как Qt установлен, но при перемещении на чистый Mac я получаю сообщение об ошибке, читаемое в Консольном приложении.
Я пытался изменить путь к исполняемому файлу на loader_path, но это не помогло.
Я понятия не имею, что я делаю неправильно или почему это не сработает, и я не смог найти что-либо в Google, конечно, я мог искать неправильные места. Есть идеи как решить эту проблему?
Это полное сообщение об ошибке:
MainApp: Ошибка домена = NSCocoaErrorDomain Code = 3587 "Пакет
«Библиотека» не может быть загружена, потому что она повреждена или отсутствует
необходимые ресурсы. "
(Dlopen_preflight (/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/
Содержание / MacOS / Библиотека): библиотека не загружена:
@loader_path /../ Каркасы / QtCore.framework / Версии / 4,0 / QtCore
Ссылка на: / Users / someUser / Downloads /
MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/../Frameworks/../Frameworks/QtXml.framework/Versions/4/QtXml
Причина: изображение не найдено) UserInfo = 0x107c5d5d0
{NSLocalizedFailureReason = Пакет поврежден или отсутствует необходимый
resources., NSLocalizedRecoverySuggestion = Попробуйте переустановить
расслоение.,
NSFilePath = / Users / someUser / Загрузки / MainApp.app / Содержание / Ресурсы / Lib / Library.bundle / Содержание / MacOS / Библиотека,
NSDebugDescription = dlopen_preflight (/ Users / someUser
/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/Library):
Библиотека не загружена:
@loader_path /../ Каркасы / QtCore.framework / Версии / 4,0 / QtCore
Ссылка от:
/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/../Frameworks/../Frameworks/QtXml.framework/Versions/4/QtXml
Причина: изображение не найдено,
NSBundlePath = / Users / someUser / Загрузки / MainApp.app / Содержание / Ресурсы / Lib / Library.bundle,
NSLocalizedDescription = Пакет «Библиотека» не может быть загружен, потому что
он поврежден или отсутствует необходимый ресурс.}