The application failed to start because it could not find or load the Qt platform plugin “windows” in “”.
在Windows上使用Qt进行开发的时候,可以使用QtCreator作为IDE,QtCreator可以简化Qt相关的设置。但是如果需要跨平台时,一般就需使用CMake管理。
在CMake+VisualStudio上开发QT界面,就碰到了标题上的问题。在网上搜了很多,有几种解决方案。
- 将< QtDir>/plugins/platforms文件夹拷贝到与.exe同级的目录下,注意,不是直接将platforms文件夹里的qwindows等dll直接拷到包含exe的目录下。如下图:
这样在执行Debug版本时,就不会出现题上问题了。 - 另外可以设置环境变量QT_QPA_PLATFORM_PLUGIN_PATH,设置为< QtDir>/plugins/platforms,如%QTDIR%\plugins\platforms\;
但是上面两种只能解决Debug版本的问题,而Release版本还是会有题上问题,这时使用< QtDir >/bin中的windeployqt.exe,生成exe发布时所需要的dll和其他必须东西的包。如windeployqt.exe Dialog.exe,结果如下图
上图中Dialog.exe是Visual Studio生成之外,其余均是由windeployqt.exe查找Dialog.exe得到其部署时所需要的dll文件。我们知道在Windows中运行程序时,会在exe当前目录、Path环境变量所表示的目录列表中查找程序和DLL,所以一开始我认为我只要包含了QT的bin目录在Path环境变量,就不需要在Release版本的目录下包含Qt5Core.dll等文件,但是当把这些文件删除之后,会出现一下问题,
所以从结果上来看,Qt在查找dll时并不采用默认的查找规则,只在自己目录下查找,可能是为了Release更容易做成发布版本吧。