0

各位程序员好!

我用 Qt 编写了一个视频播放器。在我的 Mac 上一切正常,但是当我使用 macdeployqt 部署我的应用程序并打开结果时,我收到以下消息:

WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: Phonon::createPath: Cannot connect Phonon::MediaObject ( no objectName ) to Phonon::AudioOutput ( no objectName ).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded 
...

当然,它不会播放音频(在我的机器或其他机器上)。Maqcdeployqt 确实包含 Qt 的其他部分和 3 方库问题。它只是该死的声子。我觉得我犯了一个愚蠢的错误,但我就是找不到。我的应用程序的 otool 日志显示:

@executable_path/../Frameworks/phonon.framework/Versions/4/phonon (compatibility version 4.4.0, current version 4.4.0)

作为声子的唯一参考。

我在 qt 的文档中阅读了以下内容:

“Mac 部署工具可以在 QTDIR/bin/macdeployqt 中找到。它旨在自动化创建包含 Qt 库作为私有框架的可部署应用程序包的过程。mac 部署工具还部署 Qt 插件,根据以下规则:

- 未部署插件的调试版本。- 未部署设计器插件。-始终部署图像格式插件。- 如果应用程序使用 QtSql 模块,则部署 SQL 驱动程序插件。- 如果应用程序使用 QtScript 模块,则部署脚本插件。- 如果应用程序使用 QtSvg 模块,则部署 svg 图标插件。-始终部署可访问性插件。"

也许我有声子的调试版本?我不知道,我曾尝试部署调试版本和发布版本,但都没有奏效。

我还在此页面中发现了一个相关问题: http : //www.justinfx.com/tag/phonon/ 所以我在我的捆绑包中包含了一个名为“PlugIns”的文件夹,其中包含部署后系统内部的 phonon_backened 文件夹:它在我的机器上播放了音频(但它没有在另一台机器上播放),我的应用程序最后崩溃了,所以不能这样。

我正在使用 c++、Qt 4.8.5、来自 SDK 的声子(我没有安装任何版本的声子,我只是安装了 Qt)和 Mac OS X (10.6.8)

我很想听听任何想法或建议。

提前致谢。

4

2 回答 2

0

我没有找到错误的根源,但我通过在另一台 Mac(即 Lion)上的 qt 示例文件夹中部署声子示例来绕过它。它包含包含所有声子内容的包中的文件夹“插件”,因此我现在将该文件夹包含在我的 Snow Leopard 中手动部署的包中。它很丑陋,但从现在开始就可以了。

如果有人知道真正解决问题的方法,我将很高兴听到它。

于 2013-07-31T14:35:03.830 回答
-1

我使用py2app(既没有pyinstaller也没有cx_freeze工作)它几乎完美地创建了应用程序分发文件夹,除了它没有复制声子后端。跑步macdeplpyqt没有帮助。

您的插件在您的应用程序结构中的位置是,MyApp.app/Contents/PlugIns所以我将文件夹从 Qt install ( /Developer/Applications/Qt/plugins/phonon_backend/) 复制到该PlugIns文件夹​​中。那仍然给出了同样的错误。

进一步挖掘我看到该MyApp.app/Contents/Resource/qt.conf文件期望插件位于Resource/qt_plugins文件夹中,所以我创建了一个从 fromPlugIns MyApp.app/Contents/PlugIns到的符号链接,MyApp.app/Contents/Resource/qt_plugins现在一切正常。

于 2013-12-16T18:34:43.433 回答