我在Qt v5.3.1
上使用MinGW v4.8.2
和windows 7 32bit
创建了一个应用程序。
打开我的应用程序时出现以下错误:
我已经使用windeployqt.exe
工具包含所有重要文件来运行我的应用程序。
platforms
文件夹还包含:
此外,我已包含所有重要文件,无需使用windeployqt.exe
工具手动运行我的应用程序,问题仍然存在。
我不知道如何解决这个问题。
编辑
使用Dependency Walker
工具的结果。
我仍然不知道如何获得这些DLL文件question mark
。
首先,感谢大家帮助理解问题以及如何解决问题。
现在,要解决这个问题,你必须准确地阅读这篇文章,以便先了解问题是什么,然后再解决它。 [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
工具来部署您的项目。
最后,我希望这个简短的解释对那些将面临同样问题的人有用。
尝试使用QtApplication.exe将libEGL.dll,libGLESv2.dll和D3DCompiler_43.dll添加到目录级别。 qwindows.dll很可能将它们作为依赖项,因此您会收到静默故障。如果它们位于您的Qt-Dir / bin中,您可以判断是否需要它们。如果做不到这一点,在Dependency Walker中打开qwindows.dll可能有助于显示缺少的依赖项。