Qt5 Static Build yields Не удалось загрузить плагин "windows"
Я пишу приложение Qt в Windows, используя Visual Studio 2012.
Использование надстройки Qt и настраиваемого статического дистрибутива Qt 5.0.2.
Я запускаю ужасную ошибку "Failed to load platform plugin windows"
всякий раз, когда запускаю приложение.
Я добавил к вводу компоновщика следующее:
imm32.lib
winmm.lib
Ws2_32.lib
qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
Сначала я подумал, что, возможно, я должен добавить "qwindowsd.lib" в этот список, но это не устранило проблему. Что мне нужно сделать, чтобы запустить мое приложение?
Ответы
Ответ 1
Я решил это. Благодаря этому я смог заставить все работать. Я добавил следующие библиотеки:
opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib
Я также добавил в свой код следующее:
#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
Ответ 2
Только для динамической сборки: убедитесь, что вы переместите qwindows.dll в следующий каталог:
yourapp.exe
Qt5Core.dll
...
platforms/qwindows.dll
...
Обратите внимание, что каталог плагинов отсутствует! Вы поместите все необходимые папки из QT_BASE/.../плагинов/* непосредственно вместе со своими двоичными файлами.
BTW: Мне не нужен libEGL.dll, но мое приложение почти не имеет графического интерфейса.
Мой источник: http://qt-project.org/forums/viewthread/27056/#122588
Ответ 3
У меня была такая же ошибка с версией Qt MinGW (не статичной): "Не удалось загрузить окна плагинов платформы".
Решением для меня было добавить библиотеки DLL libEGL.dll
и libEGLd.dll
.
Ответ 4
Альтернативой является копирование каталога qtbase/plugins/platforms
в каталоги Debug/Release, оставляя только qwindowsd.dll
или qwindows.dll
, если это необходимо.
Ответ 5
Вы также можете создать переменную окружения:
QT_QPA_PLATFORM_PLUGIN_PATH=<QT_BASE>\plugins\platforms
который в моем случае становится: QT_QPA_PLATFORM_PLUGIN_PATH=f:\Qt\5\5.4\msvc2013_opengl\plugins\platforms
Таким образом, избегайте установки/копирования qwindows.dll
во время разработки (чтобы сохранить дисковое пространство!?).
Это решение было также упомянуто на GitHub и здесь.
EDIT: Извините, это не эффективно для статической сборки. Но я оставлю свой A здесь.
Ответ 6
Хорошо, у меня была аналогичная проблема.
Я узнал, что QT 5.2+ имеет windeployq.exe
QT_DIRECTORY\5.2...\Bin\windeployq.exe
Используйте его с каталогом вашего проекта (где находится .exe вашего приложения). И вуаля! Автоматически связать все и готово к развертыванию!
Он получит библиотеки DLL, плагины и т.д.... автоматически!
Ответ 7
Я именно этот вопрос. Решение состоит в проверке вывода Qt в Debug. Это окно сообщает вам все DLL файлы, которые он загружает. Это те, которые вам могут понадобиться в вашей папке exe распространения.