无法加载平台插件“windows”,即使使用platforms / qwindows.dll和libEGL.dll也是如此

时间:2013-12-16 16:55:37

标签: windows mingw32 qt5.1

当我尝试在另一台计算机上执行我的qt程序时,我收到此错误并崩溃:

Failed to load platform plugin "windows". Available platforms are:
windows

我知道其他几个问题已经讨论过这个问题:

failed to load platform plugin "windows" Available platforms are: windows, minimal

Qt application: Failed to load platform plugin "windows". Available platforms are:

PyQt5 - Failed to load platform plugin "windows". Available platforms are: windows, minimal

但是我已经应用了建议的解决方案,但它仍然不适用于我。相关信息:

  • 我使用Qt 5.1.0和MinGW 4.8 32bit进行开发

  • 在我的开发电脑(Win7,64bit)上程序执行得很好

  • 我在发布模式下编译了我的应用程序

  • 目标电脑(Win7,32位)没有安装Qt

  • 我的.pro:

    的一部分

    QT + =核心gui opengl network xml testlib

    TARGET = myApp

    TEMPLATE = app

    CONFIG + = qtestlib help

    CONFIG - = app_bundle

  • 我的部署文件夹的内容:

    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 / QtCreator / bin的所有dll]

    平台/ qwindows.dll

1 个答案:

答案 0 :(得分:0)

我遇到了与qwindows.dll相同的问题 - win7 64 ok,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();
}