当我试图在另一台计算机上执行qt程序时,我收到这个错误并崩溃:
Failed to load platform plugin "windows". Available platforms are:
windows
我知道这个问题已经在其他几个问题中讨论过了:
未能加载平台插件";窗口";可用的平台有:windows,最小
Qt应用程序:加载平台插件失败"窗口";。可用平台有:
PyQt5-未能加载平台插件";窗口";。可用的平台有:windows,最小
但我已经应用了建议的解决方案,但它仍然不适用于我。相关信息:
我使用Qt 5.1.0和MinGW 4.8 32位开发
在我的开发pc(Win7,64位)上,程序执行得很好
我在发布模式中编译了我的应用程序
目标电脑(Win7,32位)没有安装Qt
我的.pro:的一部分
QT+=核心gui opengl网络xml testlib
TARGET=myApp
TEMPLATE=应用
CONFIG+=qtestlib帮助
CONFIG-=应用程序绑定
我的部署文件夹的内容:
myApp.exe
[所有dll,都在我的开发环境的.exe文件夹中]
[来自Qt/5.1.0/5.1.0/mingw48_32/bin的所有dll]
[来自Qt/5.1.0/Tools/mingw48_32/bin]的所有dll(包括libEGL.dll、libEGLd.dll、libGLESv2.dll、libGLESv2d.dll)
[来自Qt/5.1.0/Tools/Qt创建者/bin]的所有dll
platforms/qwindows.dll
我对qwindows.dll也有同样的问题--win7 64正常,win7 32失败,找不到qwindows.dll
首先,我检查了我可以用-platformpluginpath:运行它
app.exe -platformpluginpath plugins/platforms
一切都好,所以问题只是应用程序中的搜索路径错误。我最后只添加了所有可能的路径:
#include <QApplication>
#include <QDir>
void registerPluginsDir(QDir& exeDir)
{
#ifdef Q_OS_MAC
QString pluginsRelPath = "/../../PlugIns";
#elif defined(Q_OS_WIN)
QString pluginsRelPath = "Plugins";
#elif defined (Q_OS_LINUX)
QString pluginsRelPath = "../lib/plugins";
#else
#error "Unsupported OS"
#endif
QString platformsRelPath = "platforms";
QString pluginsPath = exeDir.absoluteFilePath(pluginsRelPath);
QString platformsPath = QDir(pluginsPath).absoluteFilePath(platformsRelPath);
QStringList pathes = QCoreApplication::libraryPaths();
pathes << pluginsPath;
pathes << platformsPath;
pathes << platformsRelPath;
pathes << pluginsRelPath;
QCoreApplication::setLibraryPaths(pathes);
}
int main(int argc, char *argv[])
{
QString exePath = QString::fromUtf8(argv[0]);
QFileInfo exeInfo (exePath);
QDir exeDir (exeInfo.absolutePath());
//need to set correct plugins path before app instance created
registerPluginsDir(exeDir);
QApplication app(argc, argv);
// more code here
return app.exec();
}