【发布时间】:2014-08-27 15:21:47
【问题描述】:
我通过在windows 7 32bit 上使用Qt v5.3.1 和MinGW v4.8.2 创建了一个应用程序。
打开我的应用程序时出现以下错误:
我已使用 windeployqt.exe 工具包含所有重要文件以运行我的应用程序。
platforms 文件夹还包含:
我还包含了所有重要文件以手动运行我的应用程序而不使用windeployqt.exe 工具,但问题仍然存在。
我不知道如何解决这个问题。
编辑
使用Dependency Walker 工具的结果。
我仍然不知道如何获取这些 dll 文件question mark。
【问题讨论】:
-
Qt 的 Windows 支持依赖于许多 DLL。不幸的是,我不记得我在哪里找到了这份清单。使用 Dependency Walker 查看 DLL 依赖项或使用 Process Monitor 查看哪些加载请求失败可能会有所帮助。
-
本指南非常适合详细说明部署问题:tripleboot.org/?p=138。我第二次使用 Dependency Walker,甚至更好的 Process Explorer (technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
-
@JoshKelley:我已经使用了
Dependency Walker工具,请再次查看我的问题。 @AndrewDolby:请再次查看我的问题。 -
自从 qt5 以来,Qt 的一些核心功能被移动到插件 Dll 中,这些插件 Dll 通过 dlopen/dlsym 或 LoadLibrary 调用动态加载,具体取决于系统,这就是为什么你看不到其中的一堆依赖步行者。在这种情况下,您缺少 qt 安装位置的 plugins/platform 文件夹中的 windows dll,可能还有一些其他的,具体取决于您需要的类
-
Process Explorer 或 ListDlls(两个 Sysinterals 实用程序)将允许您在开发环境中查看应用程序中加载的缺失插件 dll。然后,您可以根据您正在部署的内容检查这些内容。奇怪的是它找不到 qwindows.dll,因为您将它放在正确的位置。您可以尝试使用 qt.conf 更改插件位置。本指南详细介绍了该过程:Deploying a real Qt app。此外,部署不需要 Dependency Walker 视图中的 IESHIMS.dll 和 WER.dll。