Развертывание Qt Frameworks с приложением Mac и использование otool

У меня проблема с развертыванием фреймворков Qt с моим приложением для Mac, и я надеюсь, что некоторые догадаются, почему я получаю эту ошибку, когда запускаю приложение на чистом Mac, т.е. не на Mac разработчика.

OS: 10.7 .2 и использую XCode

Error msg:

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, который загружается главным приложением, bundle находится в папке resource. dylib перемещается с помощью Copy Files Build Phase в папку Contents/Frameworks и с помощью otool имя install_name устанавливается в (как указано 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 устанавливается в:

@executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore

и для QtXml @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml со ссылкой на QtCore: @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore

Теперь, когда я запускаю приложение на компьютере разработчика, оно четко работает, поскольку Qt установлен, но при переносе на чистый компьютер я получаю ошибку msg, читаемую в приложении Console. Я пытался изменить executable_path на loader_path, но это не помогло. Я понятия не имею, что я делаю неправильно или почему это не работает, и не смог ничего найти в Google, конечно, я могу смотреть не на те места. Есть идеи, как решить эту проблему?

Вот все сообщение об ошибке:

MainApp: Error Domain=NSCocoaErrorDomain Code=3587 "The bundle "Library" не может быть загружен, потому что он поврежден или отсутствуют необходимых ресурсов."
. (dlopen_preflight(/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/ Contents/MacOS/Library): Library not loaded:
@loader_path/../Frameworks/QtCore.framework/Versions/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=Комплект поврежден или отсутствуют необходимые ресурсы., NSLocalizedRecoverySuggestion=Попробуйте переустановить пакет, NSFilePath=/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/Library, NSDebugDescription=dlopen_preflight(/Users/someUser /Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/Library): Library not loaded: @loader_path/../Frameworks/QtCore.framework/Versions/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/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle, NSLocalizedDescription=Бандл "Library" не может быть загружен, потому что он поврежден или в нем отсутствуют необходимые ресурсы.}

9
задан mavroprovato 17 April 2015 в 08:05
поделиться