Ano*_*ous 114 c++ windows qt visual-studio-2012
编辑: 有些人开始将我的问题标记为重复.当我问这个问题时,不要忘记存在许多类似的问题(参见下面的列表).但是,这些答案都没有解决我的问题.经过长时间的搜索后,我发现了一条评论,该评论被指向缺少的lib的所有用户忽略.现在,几个月后,评论已经改为答案.然而,当我自己回答这个问题时,我打算通过直接提供解决方案来帮助其他人.这不应该被遗忘,到目前为止,我的答案帮助了很多人.因此,我的问题绝对不是重复的. 顺便说一句:在顶部提供的链接中接受的答案并不能解决问题!
是的,我使用了搜索:
从Visual Studio qwindows.dll错误部署Qt C++应用程序
无法加载平台插件"windows"可用平台是:windows,minimal
但是,就我而言,问题仍然存在.我正在使用Qt 5.1.1与Visual Studio 2012,并使用Qt Creator 2.8.1在Windows 7上开发我的应用程序.应用程序以"Release"模式编译,如果直接使用Qt Creator启动,则可以执行.
但是,当从"release"-Folder开始时,我收到以下消息:
此应用程序无法启动,因为它无法找到或加载Qt平台插件"windows".可用的平台插件有:最小,屏幕外,窗户.
文件夹结构如下所示:
release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Run Code Online (Sandbox Code Playgroud)
平台是直接从Qt\Qt5.1.1\5.1.1\msvc2012\plugins\platforms复制的文件夹,包括例如qwindows.dll.如果我像其他一些用户那样将其重命名为"平台"并不重要.Qt仍然没有找到"平台插件窗口",我的错误在哪里?
Ano*_*ous 63
好的,发布在这里/sf/answers/1208982071/没有得到其他用户的太多关注:
该libEGL.dll失踪了!尽管在尝试启动应用程序时尚未报告此问题(已报告所有其他*.dll,例如Qt5Gui.dll).
小智 35
我在我的exe位置旁边创建了一个平台目录并将qwindows.dll放入其中,但我仍然收到"无法加载平台插件"窗口".可用平台是:windows"错误.
我从C:\ Qt\Qt5.1.1\Tools\QtCreator\bin\plugins\platforms复制了qwindows.dll,这不是正确的位置.我查看了在Qt Creator中运行的调试日志,发现我的应用程序在调试器中运行时正在查看C:\ Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\platforms.
当我从C:\ Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\platforms复制时,一切正常.
Cri*_*ble 21
我发现了一个意外但直观的修复.如果您将用于发布应用程序的编辑器的bin中的qwindows.dll复制并粘贴到名为"platforms"的文件夹中,则可以将该文件夹移动到与应用程序相同的目录中,就像魔术一样.
另外一个有用的提示,Qt附带平台控制台应用程序,它将所有依赖项(包括qwindows.dll和libEGL.dll等)添加到已部署的可执行文件的文件夹中.windows的应用程序称为windeployqt,文档可以在http://doc.qt.io/qt-5/windows-deployment.html找到.这个应用程序为我节省了很多时间,这是部署可执行文件的正确方法,以免遗漏任何内容.
我碰到了这个,我找不到任何答案.
我的同事在他的机器上安装了Qt(5.6.0):C:\ Qt\Qt5.6.0\5.6\msvc2015\plugins
我在同一个位置安装了Qt(5.6.2).
我从这篇文章中了解到:http: //www.tripleboot.org/? p = 536,Qt5Core.dll在首次安装Qt时有一个写入插件的位置.由于我的同事和我的Qt目录是相同的,但安装了不同版本的Qt,需要一个不同的qwindows.dll文件.当我运行他部署的exe时,它将使用我的C:\ Qt\Qt5.6.0\5.6\msvc2015\plugins\platforms\qwindows.dll文件,而不是位于.\ platforms子文件夹中可执行文件旁边的文件.
为了解决这个问题,我在应用程序中添加了以下代码行,它在查看Qt5Core.dll中的路径之前,似乎强制它在"平台"子文件夹的exe旁边查看.
QCoreApplication::addLibraryPath(".");
Run Code Online (Sandbox Code Playgroud)
我在QApplication调用之前将上面的行添加到main方法中,如下所示:
int main( int argc, char *argv[] )
{
QCoreApplication::addLibraryPath(".");
QApplication app( argc, argv );
...
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
我找到了另一个解决方案。在 app 文件夹中创建 qt.conf 如下:
[Paths]
Prefix = .
Run Code Online (Sandbox Code Playgroud)
然后将 plugins 文件夹复制到 app 文件夹中,它对我有用。
创建目录platforms 并复制qwindows.dll到该目录,platforms并app.exe位于同一目录中
cd app_dir
mkdir platforms
xcopy qwindows.dll platforms\qwindows.dll
资料夹结构
+ app.exe
+ platforms\qwindows.dll
对于使用 QT 5.14.0 版本的人来说,我花了 2 天时间才找到这个 bug 声明:
Windeployqt 不适用于 MinGW QTBUG-80763 将在 5.14.1 中修复
https://wiki.qt.io/Qt_5.14.0_Known_Issues
所以要注意。将 Windeployqt 与 MinGW 一起使用将给出此处所述的相同错误。