我已在Qt v5.3.1
上使用MinGW v4.8.2
和windows 7 32bit
创建了一个应用程序
打开我的应用程序时出现以下错误:
我已使用windeployqt.exe
工具包含所有重要文件来运行我的应用程序。
platforms
文件夹还包含:
此外,我还包含所有重要文件,无需使用windeployqt.exe
工具即可手动运行我的应用程序,问题仍然存在。
我不知道如何解决这个问题。
修改
使用Dependency Walker
工具的结果。
我仍然不知道如何获取这些dll文件question mark
。
答案 0 :(得分: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
指向{{1}这就是问题所在
我们需要指向/更改应用程序文件夹的插件路径。
有多种方法可以指导/更改路径。我将提到我已经尝试并成功解决问题的方式
有一个名为addLibraryPath(const QString & path)的静态方法,此方法我们将使用它来指导/更改qt path folder
。
示例:
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
工具来部署您的项目。
最后,我希望这个简短的解释对我后面的人有用,他们将面临同样的问题。
答案 1 :(得分:1)
尝试使用QtApplication.exe将libEGL.dll,libGLESv2.dll和D3DCompiler_43.dll添加到目录级别。 qwindows.dll很可能将它们作为依赖项,因此您会收到静默故障。如果它们位于您的Qt-Dir / bin中,您可以判断是否需要它们。如果做不到这一点,在Dependency Walker中打开qwindows.dll可能会有助于显示缺少的依赖关系。