[英]Qt5 Application Does Not Run
我使用 Qt 5(使用 Visual Studio '12 编译)创建了一个应用程序。 它适用于我的机器。
但是,当我尝试在另一台机器上运行它时它不起作用。 我通过 cmd 收集的输出产生了一个空文件。
目录结构如下:
我发现的最相关的帖子是使用 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 的最简单方法是执行以下操作:
退出 Qt Creator。
在资源管理器中打开与 Qt 一起使用的编译器的安装文件夹。 例如:
C:/Qt/5.3/msvc2010_opengl/
创建副本plugins
(代替文件夹Copy of plugins
文件夹中的相同路径plugins
,所以它的母公司是msvc2010_opengl
在这种情况下)。
在另一个资源管理器窗口中,在您的开发机器上打开您的 exe(Qt 程序)。 对您的程序进行最少的测试,以确保主要功能正常工作。 (许多运行时插件在使用它们的 QObject 被实例化之前不会被加载)。
删除Qt路径下的plugins
文件夹。
Windows 将锁定您的 exe 正在使用的所有 dll,并防止您删除许多 dll。 单击跳过所有不可删除的文件夹和文件。
现在进入您以前无法删除的每个文件夹,并尝试删除每个文件夹中的所有单独的 dll。 单击跳过所有不可删除的 dll。
现在,当您完成所有操作后,您将获得一个插件文件夹的框架,仅显示您的应用程序正在使用的 dll。
它可能包括以下文件夹: accessibility
、 platforms
和imageformats
,具体取决于您在.pro
文件中包含的内容。
关闭你的exe。
将精简后的插件文件夹的内容复制到您的 exe 旁边。
恢复插件文件夹的备份(从 Qt 路径中删除精简的插件文件夹并恢复Copy of plugins
)。
现在你应该可以走了。 在非开发机器上测试。
同样在某些机器上,当使用 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
部署应用程序后,尝试运行myapp.exe并注意缺少哪些 dll 文件。
将所需的 dll 文件从QTDIR/bin复制/粘贴到您的 <APP_PATH>
有关部署的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.