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

问题描述 投票:5回答:2

我在Qt v5.3.1上使用MinGW v4.8.2windows 7 32bit创建了一个应用程序。 打开我的应用程序时出现以下错误:

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

platforms文件夹还包含:

此外,我已包含所有重要文件,无需使用windeployqt.exe工具手动运行我的应用程序,问题仍然存在。

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


编辑

使用Dependency Walker工具的结果。

我仍然不知道如何获得这些DLL文件question mark

c++ qt qt5 platform
2个回答
2
投票

首先,感谢大家帮助理解问题以及如何解决问题。

现在,要解决这个问题,你必须准确地阅读这篇文章,以便先了解问题是什么,然后再解决它。 [Deploying a real Qt app – understanding more of Qt]

结论简而言之: 问题的原因是the path of the plugins that you used in your project。 您在项目中使用的插件的默认路径是qt path folder,但是当您的计算机上没有安装qt开发环境时,您的应用程序将无法运行,因为默认的path to plugins指向qt path folder,这就是问题所在。 我们需要指向/更改应用程序文件夹的插件路径。

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

有一个名为addLibraryPath(const QString & path)的静态方法,这个方法我们将用它来指导/改变the plugins path

例:

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


    return a.exec();
}

pluginsFolder是包含您在项目中使用的所有插件的文件夹。

你也可以改变

QApplication::addLibraryPath("pluginsFolder");

QApplication::addLibraryPath(".");

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

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.