在Mac上部署Qt应用程序:此应用程序无法启动,因为它无法找到或加载Qt平台插件" cocoa" in""

时间:2017-12-03 22:50:23

标签: c++ macos qt cocoa

我试图以可移植的方式部署Qt应用程序,而且我有点卡在插件部署上,documentation并不像我希望的那样清晰

首先,我从macdeployqt开始,但收到以下消息:

WARNING: Could not find any external Qt frameworks to deploy in "Utility.app" 
WARNING: Perhaps macdeployqt was already used on "Utility.app" ? 
WARNING: If so, you will need to rebuild "Utility.app" before trying again.

我检查了Qt5 cannot find platform plugins Mac OS X中建议的版本,但我没有看到任何证据表明我遇到过类似的问题(版本)。

所以,我开始手动做事,并且在复制了必要的框架(otool -L指出的那些框架)之后设法让我的计算机工作,并删除指向我本地Qt的LC_RPATH条目安装。

但是,我遇到了插件问题:如果我没有在应用程序中捆绑插件,它可以在本地工作,但不能在其他任何人的机器上工作。如果我在Utilities.app/Contents/plugins/platforms中捆绑libqcocoa.dylib,那么我会收到以下错误:

This application failed to start because it could not find or load the Qt platform plugin "cocoa"
in "".

Available platform plugins are: cocoa, minimal, offscreen.

Reinstalling the application may fix this problem.

中止陷阱:6

特别好奇,因为我没有复制最小或屏幕外平台插件......

我还尝试将QT_QPA_PLATFORM_PLUGIN_PATH设置为" ../ plugins / platforms"在构建步骤中,但似乎没有任何效果。我也在qt.conf文件中使用了几个不同的设置,但没有用。

我现在已经为此暂时追逐几种不同的解决方案,但请随意。当然,我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

尝试使用install_name_tool为应用程序包内的qlibcocoa插件设置Qt框架的路径,如下所示:

  

install_name_tool -change @ rpath / QtCore.framework / Versions / 5 / QtCore   @executable_path /../框架/ QtCore.framework /版本/ 5 / QtCore   MyApp.app/Contents/plugins/platforms/libqcocoa.dylib

libqcocoa.dylib依赖于QtCore,QtGui,QtWidgets,QtPrintSupport。 他们都应该在MyApp.app/Contents/Frameworks中。

libqcocoa.dylib应该在 MyApp.app/Contents/plugins/platforms/libqcocoa.dylib

这适合我。