无法加载平台插件"windows",即使使用平台/qwindows.dll 和 libEGL.dll



当我试图在另一台计算机上执行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();
}

相关内容

  • 没有找到相关文章

最新更新