Qt快速部署,运行时空窗口
Posted
技术标签:
【中文标题】Qt快速部署,运行时空窗口【英文标题】:Qt quick deploy, empty window on running 【发布时间】:2013-09-11 14:20:59 【问题描述】:我在部署后启动应用程序时遇到问题。 构建项目,复制发布文件夹中的所有必要文件,将其移动到另一台机器上(如果很重要,我在 Windows 8 64 位上使用 MinGW 4.8 32 位构建它并尝试在 Windows XP 32 位上运行它)。但是,当我尝试运行它时,它只显示一个白色的小方块。我尝试使用 Qt 资源系统。创建了一个 .qrc 文件,这里是:
<RCC>
<qresource prefix="/">
<file>qml/Rename_Files/Button.qml</file>
<file>qml/Rename_Files/main.qml</file>
<file>images/file_browser_icon_32x32.png</file>
<file>images/file_renamer_icon_32x32.png</file>
</qresource>
并相应地使用资源: viewer.setSource(QUrl("qrc:/qml//Rename_Files/main.qml")); “qrc:/images/file_browser_icon_32x32.png”和“qrc:/images/file_renamer_icon_32x32.png” 在构建机器上一切正常。现在再次复制另一台机器上的所有内容并重试。完全没有变化! 知道如何解决吗?
【问题讨论】:
【参考方案1】:无法在运行时在部署机器中加载图像通常是运行时插件错误。如果找不到合适的imageformat dll,就不会加载图片。
在您的 exe 旁边创建一个名为“imageformats”的文件夹,并将适当的 dll 放入其中以使用您在程序中使用的所有图像格式。
在你的开发机器上找到 dll
<Qt Install Dir>\<Compiler>\plugins\imageformats
http://qt-project.org/doc/qt-5.0/qtcore/qcoreapplication.html#libraryPaths
http://qt-project.org/doc/qt-4.8/deployment-windows.html#qt-plugins
所以你可能需要qico.dll
。
如果以上方法不能解决您的问题,您可能需要在您的开发机器上运行“depends.exe”,看看是否还有您需要的其他dll。你也可以在你的开发机器上做一些额外的调试来做运行时检查,以确保它可以找到图像:
Qt Label::setPixmap not working
希望对您有所帮助。
【讨论】:
qico.dll 对我没有帮助。明天我会阅读一些关于“depends”应用程序的文档。 没办法,我确实在开发机器上运行了 Dependency Walker,它抱怨一些 IESHIMS.DLL。然后在目标机器上运行 Dependency Walker,结果如下:postimg.org/image/m2f75gyrx。 MPR.DLL 在 QT5CORE.DLL 中,所以这似乎是问题所在。我确实再次复制了 Qt5Core.dll 和 Qt5Cored.dll,但仍然出现该错误。知道缺少什么吗? 假设您使用 msvc 作为编译器,您是否运行了适当的 MS 可再发行组件包? 我在上面说过我使用的是 MinGW 4.8 32 位,而不是 MSVC。【参考方案2】:我解决了我的问题。此线程 http://www.qtcentre.org/threads/56250-Empty-window-when-running-application-on-Windows-XP-32-bits?highlight=empty+window 包含我通过研究和 Chris 的帮助发现的内容。 对于迟到的回复,我深表歉意。
【讨论】:
Athan,你能澄清一下到底是什么帮助了你吗?我用 Qt 和 QtQuick.2 文件夹尝试了他的解决方案,但意识到我的部署已经有了它们。 @AlexPetrenko,它帮助我找到了解决问题的方法。很可能(Qt)文件夹默认不添加,您需要将这些文件夹复制到发布构建文件夹中。正如我当时所做的那样,您需要找到应用程序的要求。首先尝试使用“Hello world!”应用程序。创建一个发布版本,关闭 qt creator,重命名 qt app 文件夹,然后尝试在没有链接到 Qt 文件夹的库的情况下运行该应用程序。一个一个地复制需求,直到你可以运行它。同样,如果您还不了解“开发”应用程序的需求,您需要找到它们。上面的链接也解释了过程。以上是关于Qt快速部署,运行时空窗口的主要内容,如果未能解决你的问题,请参考以下文章