繁体   English   中英

Qt5 应用程序不运行

[英]Qt5 Application Does Not Run

我使用 Qt 5(使用 Visual Studio '12 编译)创建了一个应用程序。 它适用于我的机器。

但是,当我尝试在另一台机器上运行它时它不起作用。 我通过 cmd 收集的输出产生了一个空文件。

目录结构如下:

  • 我的应用程序
  • icudt52.dll
  • icuin52.dll
  • icuuc52.dll
  • 库文件
  • libGLESv2.dll
  • msvcp120.dll
  • msvcr120.dll
  • Qt5Core.dll
  • Qt5Gui.dll
  • 平台/qminimal.dll
  • 平台/qwindows.dll

我发现的最相关的帖子是使用 QT5 库部署的应用程序未在 Windows 7 上启动- 但解决方案(包括 qwindows.dll 和 qminimal.dll)不起作用。

有任何想法吗?

当您在 Qt Creator 外双击您的 exe 时,Windows 将报告一些启动错误。 看起来您已经包含了大部分或全部这些内容。

由于您的 exe 搜索的LibraryPaths ,您的开发机器通常不会在启动和运行其 qt 插件时遇到问题。 http://qt-project.org/doc/qt-5/qcoreapplication.html#libraryPaths

Dependency Walker将完成这项工作并向您展示您需要知道的内容,但输出非常复杂且难以破译。

我发现找出我在 Windows 上运行时使用的 Qt 插件 dll 的最简单方法是执行以下操作:

  1. 退出 Qt Creator。

  2. 在资源管理器中打开与 Qt 一起使用的编译器的安装文件夹。 例如:

     C:/Qt/5.3/msvc2010_opengl/
  3. 创建副本plugins (代替文件夹Copy of plugins文件夹中的相同路径plugins ,所以它的母公司是msvc2010_opengl在这种情况下)。

在此处输入图片说明

  1. 在另一个资源管理器窗口中,在您的开发机器上打开您的 exe(Qt 程序)。 对您的程序进行最少的测试,以确保主要功能正常工作。 (许多运行时插件在使用它们的 QObject 被实例化之前不会被加载)。

  2. 删除Qt路径下的plugins文件夹。

  3. Windows 将锁定您的 exe 正在使用的所有 dll,并防止您删除许多 dll。 单击跳过所有不可删除的文件夹和文件。

在此处输入图片说明

  1. 现在进入您以前无法删除的每个文件夹,并尝试删除每个文件夹中的所有单独的 dll。 单击跳过所有不可删除的 dll。

  2. 现在,当您完成所有操作后,您将获得一个插件文件夹的框架,仅显示您的应用程序正在使用的 dll。

  3. 它可能包括以下文件夹: accessibilityplatformsimageformats ,具体取决于您在.pro文件中包含的内容。

  4. 关闭你的exe。

  5. 将精简后的插件文件夹的内容复制到您的 exe 旁边。

  6. 恢复插件文件夹的备份(从 Qt 路径中删除精简的插件文件夹并恢复Copy of plugins )。

  7. 现在你应该可以走了。 在非开发机器上测试。

关于 VS C++ 运行时的说明

同样在某些机器上,当使用 MSVC 部署 Qt 时,msvcrXXX.dll 与系统其余部分使用的不匹配。 我们没有在办公室的安装程序中部署 msvcrXXX.dll,而是包含 Microsoft C++ Redistributable Installer 并在安装脚本中运行它。 在一些机器上,他们损坏了 Redistributables,我们不得不强制安装 Redistributables 以修复我们有时会遇到的“来自服务器的推荐”错误。

您可以在最新支持的 Visual C++ 下载 中找到 MSVC Redistributables 的最新安装程序。

希望有帮助。

您必须在手动复制 dll 文件之前部署您的应用程序。

要在 Windows 上部署 Qt 应用程序,您可以使用windeployqt ,它可以在以下位置找到:

<QTDIR>/bin/windeployqt

示例批处理脚本可用于部署 Qt 应用程序(使用 PowerShell 或 cmd 运行):

C:\Qt\Qt5.x.x\5.x.x\MSVCx_x\bin\windeployqt <APP_PATH>/myapp.exe
  1. 部署应用程序后,尝试运行myapp.exe并注意缺少哪些 dll 文件。

  2. 将所需的 dll 文件从QTDIR/bin复制/粘贴到您的 <APP_PATH>

有关部署的更多信息:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM