Не удалось загрузить плагин платформы "windows", даже с платформами /qwindows.dll и libEGL.dll

Когда я пытаюсь выполнить мою программу qt на другом компьютере, я получаю эту ошибку и вылет:

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

Я знаю, что эта проблема обсуждалась в нескольких других вопросах:

Не удалось загрузить плагин платформы "Windows" Доступные платформы: Windows, минимальный

Приложение Qt: Не удалось загрузить плагин платформы "windows". Доступные платформы:

PyQt5 - Не удалось загрузить плагин платформы "windows". Доступные платформы: окна, минимальные

Но я применил предложенные решения, и они все еще не работают для меня. Релевантная информация:

  • Я использую Qt 5.1.0 с MinGW 4.8 32bit для разработки

  • на моем компьютере разработчика (Win7, 64bit) программа работает просто отлично

  • Я скомпилировал свое приложение в режиме релиза

  • на целевом ПК (Win7, 32bit) не установлен Qt

  • часть моего.pro:

    QT + = основной графический интерфейс opengl для сети xml testlib

    TARGET = myApp

    ШАБЛОН = приложение

    CONFIG + = qtestlib help

    CONFIG - = app_bundle

  • содержимое моей папки развертывания:

    MYAPP.EXE

    [все библиотеки, которые находятся в папке.exe моей среды разработки]

    [все библиотеки из Qt / 5.1.0 / 5.1.0 / mingw48_32 / bin]

    [все библиотеки из Qt/5.1.0/Tools/mingw48_32/bin] (включая libEGL.dll, libEGLd.dll, libGLESv2.dll, libGLESv2d.dll)

    [все библиотеки из Qt/5.1.0/Tools/QtCreator/bin]

    платформы /qwindows.dll

1 ответ

У меня была такая же проблема с 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();
}
Другие вопросы по тегам