(Qt 5.7.0)无法找到或加载qt平台插件“windows”

时间:2016-07-13 19:09:40

标签: c++ windows qt dll

请记住,所有这些都是使用 Qt Creator(5.6.1和5.7)

我的工作机器上有一个项目(Win7,64位,在Qt 5.6.1中使用MinGW 5.3.0 32位编译)。它在调试和发布模式下都能很好地工作。

不久之后,我决定在另一台机器(WinXp,32位)上测试我的程序。我刚刚传递了可执行文件和.dll。仍然像魅力一样工作。

后来,我在我的游戏机(Win10,64bits)中测试了我程序的SAME版本。奇怪的是,它根本不起作用。我收到以下错误:

“无法找到或加载qt平台插件”windows“”。

我记得如果缺少.dll,则会发生此错误。所以我将所有.dll从Qt文件夹传递到我的程序文件夹(具有删除不需要的后者的意图)。令我惊讶的是,它仍然没有用。但错误是不同的:

“无法找到或加载qt平台插件”windows“...可用平台插件有:最小,屏幕外,窗口,最小,屏幕外,窗口。”

它非常清楚地发现了平台插件窗口(qwindows或qwindowsd ......或两者都有),但它无法加载它。任何想法为什么?

编辑:C:\Qt\5.7\mingw53_32\bin中的所有 .dll 都已复制并粘贴到包含可执行文件的文件夹中。

C:\Qt\5.7\mingw53_32\plugins中的所有文件夹都已复制并粘贴到包含可执行文件的文件夹中。

几乎就是我添加的全部内容!

4 个答案:

答案 0 :(得分:9)

为什么会出现问题

老实说,我不知道。但它似乎很像“Alexander Saprykin”的答案是正确的。在测试过程中,我不得不更新我的Qt,因此很可能只是版本不匹配。

另外,当我使用Qt 5.7.0重新构建我的构建时,它起作用,这意味着它确实只是一个不匹配的情况。

我如何修复它

正如“Sebastian Lange”在评论中所说,使用windeplyqt.exe完成了这项工作。我刚刚删除了我的构建文件夹中的.exe以外的所有内容,打开了Qt5.7命令行,将chaged目录与我的.exe相同并运行了命令windeployqt .windeployqt [name_of_exe].exe

感谢大家!

答案 1 :(得分:5)

听起来你的程序目录结构不太正确。对于Windows Qt5应用程序,您应该在与.exe文件相同的目录中有一个名为“platforms”的文件夹,并且该平台文件夹中应该是qwindows.dll文件

答案 2 :(得分:1)

答案说你需要一个"平台"包含应用程序的目录中包含qwindows.dll的目录是正确的。重要的是,它必须直接在您的应用程序目录中,即./platforms/qwindows.dll,而不是在应用程序目录中的另一个目录中,例如./plugins/platforms/qwindows.dll

这在Qt 5.7文档中有记录;在Qt Creator中,去帮助并查找"部署"。此处还讨论了如何更改应用程序将查找此库和其他库的位置。

我遇到了同样的问题;我已经验证了这个解决方案的工作原理是将我的应用程序及其依赖的DLL,以及名为platforms的文件夹包含qwindows.dll,放在闪存驱动器的目录中,并在没有安装Qt的计算机上打开应用程序。该应用程序打开正常。

答案 3 :(得分:0)

你说应用程序是用Qt 5.6.1编译的,你还复制了Qt 5.7.0中的所有.dll文件。但是你应该使用与用于app编译的相同版本的.dll(5.6.1)。由于版本不匹配,它似乎无法加载插件。