【发布时间】:2012-02-22 02:21:53
【问题描述】:
我在使用我的 Mac 应用程序部署 Qt 框架时遇到问题,我希望有人知道为什么我在干净的 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 中引用的,但它不存在。
这是设置:我有一个使用 QtCore 和 QtXml 的 dylib(不是我选择的,但现在我需要这两个框架),dylib 用于由主应用程序加载的 NSBundle,捆绑包位于资源文件夹中。 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
现在,当我在开发者 mac 上运行应用程序时,它显然可以工作,因为安装了 Qt,但是当移动到干净的 mac 时,我收到错误消息,可在控制台应用程序中读取。 我尝试将 executable_path 更改为 loader_path,但这不起作用。 我不知道我做错了什么或为什么不会做错,并且无法在 Google 上找到任何内容,当然我可能看错了地方。任何想法如何解决这个问题?
这是整个错误消息:
MainApp: Error Domain=NSCocoaErrorDomain Code=3587 "捆绑包 “库”因损坏或丢失而无法加载 必要的资源。”
(dlopen_preflight(/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/ 内容/MacOS/库):库未加载:
@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=捆绑包已损坏或缺少必要的 resources., 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): 库未加载: @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”,因为 它已损坏或缺少必要的资源。}
【问题讨论】:
标签: macos qt deployment