【问题标题】:Qt5 cannot find platform plugins Mac OS XQt5 找不到平台插件 Mac OS X
【发布时间】:2013-11-28 01:57:46
【问题描述】:

我正在尝试根据this link 在 Mac 上部署 Qt 程序。在我的可执行文件和它所依赖的所有库(我复制到应用程序包中)上使用 otool -L 后,当我尝试运行它时,我在 QtCreator 的应用程序输出中收到此错误。

此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“cocoa”。

重新安装应用程序可能会解决此问题。 程序意外结束。

我尝试复制qt平台插件libqcocoa.dylib并更改qt.conf中的插件目录according to this,但仍然失败。

另外值得指出的是,我第一次尝试使用 qt 的 macdeployqt 工具,但它失败并显示此消息,尽管我是第一次在可执行文件上运行它:

错误:找不到“MyProgram.app/Contents/MacOS/MyProgram”的捆绑二进制文件 错误:“otool:无法打开文件:(没有这样的文件或目录)”

警告:

警告:在“MyProgram.app/Contents/MacOS/MyProgram”中找不到要部署的任何外部 Qt 框架

警告:也许 macdeployqt 已在“MyProgram.app/Contents/MacOS/MyProgram”上使用?

警告:如果是这样,您需要在重试之前重新构建“MyProgram.app/Contents/MacOS/MyProgram”。 错误:找不到“MyProgram.app/Contents/MacOS/MyProgram”的捆绑二进制文件

错误:从“/Developer/Applications/Qt/plugins/platforms/libqcocoa.dylib”复制文件失败

错误:到“MyProgram.app/Contents/MacOS/MyProgram/Contents/PlugIns/platforms/libqcocoa.dylib”

错误:从“/Developer/Applications/Qt/plugins/printsupport/libcocoaprintersupport.dylib”复制文件失败

错误:到“MyProgram.app/Contents/MacOS/GraphiteMiniEditor/Contents/PlugIns/printsupport/libcocoaprintersupport.dylib”

【问题讨论】:

  • 当你编译你的程序并拥有一个应用程序包时,如果你右键单击该包并选择“显示包内容”,你可以在“MyProgram.app”中查看二进制文件是否存在/Contents/MacOS/MyProgram" 你能确认它在那里吗?
  • 是的,它就在那里,这就是我运行所有 install_name_tool 命令的文件。我最终恢复到 Qt4.8,它现在可以工作了。
  • 也许你可以试试这个修改版的 macdeployqt:github.com/MaximAlien/macdeployqt 我发现在 Mac 上部署 Qt5 真的很不简单,这个版本的 macdeployqt 帮助了我。
  • 您的操作系统上是否有可能同时拥有 Qt 4 和 Qt 5?如果你这样做,请直接从 Qt5 目录调用 macdeployqt,即:~/Qt/5.5/clang64/bin/macdeployqt - 作为参数给出应用程序包(MyProgram.app)而不是应用程序可执行文件的路径 - 它应该可以正常工作(至少对于 OS X 10.10 上的 Qt 5.4 和 5.5)

标签: c++ macos qt


【解决方案1】:

Re macdeployqt 失败:看起来,对于 macdeployqt 的参数,您传递的是可执行文件的路径,而不是包的路径。 IE。只需传递 .../MyProgram.app 而不是 .../MyProgram.app/Contents/MacOS/MyProgram。

(但我也无法在沙盒应用中找到 libqcocoa。我可能会求助于将其静态链接到我的应用中。)

【讨论】:

  • macdeployqt 需要应用程序包而不是应用程序包内的可执行程序才能正常工作 - 我最近为 Mac OS X(使用 Qt 5.4.2 和 5.5.1)部署了 2 个不同的应用程序,此工具没有任何问题.
【解决方案2】:

为了给 Kamil Klimek 的解决方案更多的关注(它为我解决了问题):

当我使用离线安装程序安装 QtCreator (Qt 5.x) 时遇到了同样的问题,但显然还通过 Homebrew 安装了 Qt (4.x)(可能作为依赖项引入)。用 5.x 编译代码,用 4.x macdeployqt 脚本部署它不起作用。

所以,请确保例如:

which macdeployqt

从用于编译代码的同一 Qt 版本/路径调用 macdeployqt

【讨论】:

  • 调用“brew list”和“brew remove qt”+“brew remove qt5”似乎对我有帮助(即使我明确指出了正确的 macdeployqt)
【解决方案3】:

我在使用 Qt 5.4.2 的 OS X Lion 中遇到了这个错误。当我安装 Xcode 命令行实用程序时,错误消失了,macdeployqt 工作了。

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多