部署Qt5 QML应用程序

Folibis

为了测试QML部署,我创建了一个非常简单的QML应用程序。这是代码:

main.cpp

#include <QApplication>
#include <QQmlApplicationEngine>
#include <QFile>

int main(int argc, char **argv) {
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;

    QString path = app.applicationDirPath() + "/qml/main.qml";
    if(QFile::exists(path))
        engine.load(path);
    else {
        return 1;
    }
    return app.exec();
}

main.qml

import QtQuick 2.2
import QtQuick.Controls 1.2

ApplicationWindow {
    id: mainWindow
    title: "Test window"
    width: 800
    height: 600
    visible: true
}

为了确保系统中未安装任何开发库,我已经设置了带有纯Windows XP安装的虚拟机。然后,我按照此处所述的说明进行操作,并将所有Qt5 * .dll以及platform / qwindows.dll和icu * 52.dll复制到了程序目录中。依赖项Walker确认没有遗留任何中断的依赖项,即应正确设置所有内容。

但是,由于某些原因,当我运行我的应用程序时,我什么也看不到。既没有窗口,也没有错误消息。从控制台运行也没有错误。尽管如此,我仍可以看到我的应用程序在任务管理器中运行,就像它在后台运行一样。在开发机器上运行该应用程序毫无问题:该应用程序正确启动,我可以看到其窗口。

我究竟做错了什么?我如何部署QML应用程序以确保它可以在任何其他非开发计算机上运行?

恶意的

如果使用MinGW,请尝试将所有文​​件夹从qml文件夹插件复制到程序的目录中。同时复制库:icudt52.dllicuin52.dllicuuc52.dlllibgcc_s_dw2-1.dlllibstdc++-6.dlllibwinpthread-1.dllQt5Core.dllQt5Gui.dllQt5Network.dllQt5Qml.dllQt5Quick.dllQt5Svg.dllQt5Widgets.dll

最终,目录将如下所示:

  • 恩吉尼奥
  • 图片格式
  • 平台
  • t
  • QtGraphicalEffects
  • Qt定位
  • QtQml
  • QtQuick
  • QtQuick.2
  • QtSensors
  • QtWebKit
  • QtWinExtras
  • icudt52.dll
  • icuin52.dll
  • icuuc52.dll
  • libgcc_s_dw2-1.dll
  • libstdc ++-6.dll
  • libwinpthread-1.dll
  • Qt5核心
  • Qt5Gui.dll
  • Qt5Network.dll
  • Qt5Qml.dll
  • Qt5Quick.dll
  • Qt5Svg.dll
  • Qt5Widgets.dll
  • YOUR_PROGRAM.exe

这种方法适用于未安装Qt的WindowsXP / Win7。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章