C++ 此应用程序无法启动,因为它无法找到或加载Qt平台插件;“窗口”;错误消息

C++ 此应用程序无法启动,因为它无法找到或加载Qt平台插件;“窗口”;错误消息,c++,qt,qt5,platform,C++,Qt,Qt5,Platform,我使用Qt v5.3.1和MinGW v4.8.2在windows7 32位上创建了一个应用程序 打开应用程序时出现以下错误: 我已经使用windeployqt.exe工具包含了运行应用程序所需的所有重要文件 此外,platforms文件夹还包含: 此外,我还包含了所有重要文件,以便在不使用windeployqt.exe工具的情况下手动运行我的应用程序,问题仍然存在 我不知道如何解决这个问题 编辑 使用Dependency Walker工具的结果 我仍然不知道如何获取这些dll文件问号

我使用
Qt v5.3.1
MinGW v4.8.2
windows7 32位上创建了一个应用程序
打开应用程序时出现以下错误:

我已经使用
windeployqt.exe
工具包含了运行应用程序所需的所有重要文件

此外,
platforms
文件夹还包含:

此外,我还包含了所有重要文件,以便在不使用
windeployqt.exe
工具的情况下手动运行我的应用程序,问题仍然存在

我不知道如何解决这个问题


编辑

使用
Dependency Walker
工具的结果


我仍然不知道如何获取这些dll文件
问号

尝试使用QtApplication.exe将libEGL.dll、libGLESv2.dll和D3DCompiler_43.dll添加到目录级别。qwindows.dll很可能将它们作为依赖项,因此您会遇到无声故障。如果这些文件位于Qt目录/bin中,您可以判断是否需要这些文件。如果做不到这一点,在Dependency Walker中打开qwindows.dll可能有助于显示缺少的依赖项。

首先,感谢大家为理解此问题以及如何解决此问题做出了贡献

现在,要解决这个问题,您必须准确阅读本文,以便首先了解问题是什么,然后了解如何解决它。[]

结论简而言之:
问题的原因是您在项目中使用的插件路径

您在项目中使用的插件的默认路径是
qt path folder
,但是当您的计算机上没有安装qt开发环境时,您的应用程序将不会运行,因为插件的默认
路径指向
qt path folder
,这就是问题所在。
我们需要将插件路径定向/更改到您的应用程序文件夹

有几种方法可以引导/更改路径。我将提到我已经尝试并成功解决这个问题的方法

有一个名为的静态方法,我们将使用它来指导/更改
插件路径

示例:

int main(int argc, char *argv[])
{
    QApplication::addLibraryPath("pluginsFolder");
    QApplication a(argc, argv);
    Widget w;
    w.show();


    return a.exec();
}
pluginsFolder
是包含项目中使用的所有插件的文件夹

你也可以改变

QApplication::addLibraryPath("pluginsFolder");

这意味着主应用程序文件夹中的插件不在名为
plugins
的子目录中
不要忘记使用
windeployqt.exe
工具来部署您的项目


最后,我希望这篇简短的解释对我之后的那些将面临同样问题的人有用。

Qt的Windows支持依赖于大量DLL。不幸的是,我不记得我在哪里找到了名单。使用查看DLL依赖关系或使用查看哪些加载请求失败可能会有所帮助。本指南非常适合详细说明部署问题:。我第二次使用Dependency Walker,或者更好的Process Explorer()@JoshKelley:我很抱歉使用了
Dependency Walker
工具,请再次查看我的问题@AndrewDolby:请再次看我的问题。由于qt5的一些核心功能被移动到插件DLL,这些DLL根据系统的不同通过dlopen/dlsym或LoadLibrary调用动态加载,这就是为什么在dependency walker中看不到它们的原因。在这种情况下,您在qt安装位置的plugins/platform文件夹中缺少windows dll,根据您需要的类,可能还有其他一些类Process Explorer或ListDLL(这两个Sysinterals实用程序)将允许您在开发环境中查看应用程序中加载的缺少的插件dll。然后,您可以根据正在部署的内容检查这些内容。奇怪的是,它找不到qwindows.dll,因为它位于正确的位置。您可以尝试使用qt.conf更改插件位置。本指南详细介绍了以下过程:。此外,部署时不需要Dependency Walker视图中的IESHIMS.dll和WER.dll。我已经应用了您所说的所有内容,但仍然会出现错误消息。您使用的是“pluginsFolder”还是“plugins”?在pluginsfolder中,您有例如“platforms,sqldrivers,…”folders`?@user1767754:
pluginsfolder
是指收集其中所有插件(sqldrivers,platforms等)的文件夹名称,它位于您的应用程序文件夹中。QApplication::addLibraryPath(“E:/plugins/”;即使我在这个文件夹中有平台、sqldrivers,也没有帮助在QApplication对象之前添加
QApplication::addLibraryPath(“E:/plugins”)
。例如:
QApplication::addLibraryPath(“E:/plugins”);质量保证申请a(argc、argv)
QApplication::addLibraryPath(".");