我在使用我的 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 引用的,而 /../Frameworks/../Frameworks 并不存在。
这是设置:我有一个使用 QtCore 和 QtXml 的 dylib(不是我选择的,但现在我需要这两个框架),dylib 在 NSBundle 中使用,它由主应用程序加载,捆绑包是位于资源文件夹中。 dylib 通过复制文件构建阶段移动到文件夹 Contents/Frameworks 并使用 otool 将 install_name 设置为(如http://doc.qt.digia.com/4.3/deployment-mac.html 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,但这不起作用。
我不知道我做错了什么,也不知道为什么不行,而且在谷歌上找不到任何东西,当然我可能找错了地方。有什么想法如何解决这个问题吗?
这是完整的错误消息:
MainApp:错误域=NSCocoaErrorDomain代码=3587“捆绑包
“库”因损坏或丢失而无法加载
必要的资源。”
(dlopen_preflight(/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/
内容/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
原因:未找到图像)UserInfo=0x107c5d5d0
{NSLocalizedFailureReason=捆绑包已损坏或缺少必需的
资源。, NSLocalizedRecoverySuggestion=尝试重新安装
捆。,
NSFilePath=/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/Library,
NSDebugDescription=dlopen_preflight(/用户/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”,因为
它已损坏或缺少必要的资源。}