- Плагин платформы Qt «Windows» не найден ни на одном компьютере
- Решение
- Другие решения
- Не удалось запустить приложение, так как не удалось найти или загрузить плагин платформы QT & quot; windows & quot;
- Решение
- Другие решения
- Qt 5.1.1: Не удалось запустить приложение, потому что плагин платформы & quot; windows & quot; пропал, отсутствует
- Решение
- Другие решения
Плагин платформы Qt «Windows» не найден ни на одном компьютере
У меня есть приложение, созданное на Qt 5.5, развернутое и работающее на x86 Windows 7 с динамическим связыванием. Когда я пытаюсь запустить его на этом конкретном компьютере, Я получаю следующую ошибку:
Не удалось запустить это приложение, так как не удалось найти или загрузить
Плагин платформы Qt «windows».
Доступные плагины платформы: минимальный, вне экрана, окна, окна.
Переустановка приложения может решить проблему.
Плагин «windows» действительно повторяется дважды в списке.
Хотя я правильно настроил библиотеки, чтобы они без проблем работали на моем главном компьютере, здесь platforms каталог, похоже, не найден.
Об этой ошибке можно найти много похожих вопросов, но я попробовал все найденные ответы (включая изменение имен файлов и папок, добавление различных дополнительных библиотек Qt в каталог и т. Д.) Безуспешно. Я снова создал приложение, убедившись, что все компоненты имеют правильную архитектуру, опять же без успеха.
Помимо статических ссылок, как я могу заставить его работать?
Решение
Попробуйте использовать windeployqt.
Он попытается автоматически собрать все необходимые библиотеки.
Другие решения
Вам нужно положить папкуплатформы‘из \ $ QTDIR \ $ version \ $ complier \плагины\ (который должен содержать файлы qwindows.dll а также qminimal.dll) рядом с вашим .exe файлом
Обычный список dll для Qt 5 на Windows:
Настройка QT_QPA_PLATFORM_PLUGIN_PATH переменная окружения работал на меня .
Это решение было также упомянуто Вот а также Вот .
Откройте Cmd и напишите это для развертывания qtquick (удалите —qmldir для не qtquick):
Не удалось запустить приложение, так как не удалось найти или загрузить плагин платформы QT & quot; windows & quot;
Я просмотрел все вопросы, связанные с переполнением стека, и ни одно из решений не помогло мне.
Я строю приложение Qt с этой настройкой:
- Windows 7 Профессиональная x64
- Visual Studio 2012
- Qt 5.2.0 собран с configure -developer-build -debug-and-release -opensource -nomake examples -nomake tests -platform win32-msvc2012 -no-opengl
- Проект использует QtSingleApplication (qt-solutions)
- Приложение представляет собой 32-битное приложение
- qmake запускается со следующим: -makefile -spec win32-msvc2012
- .при использовании QMAKE_CXX += /D_USING_V110_SDK71_
Я могу нормально собирать и запускать свою программу на моей машине для разработки (отмечено выше); Я также могу установить и запустить пакет из каталога Program Files на компьютере разработчика.
Когда я устанавливаю и запускаю на компьютере с Windows Vista (несколько компьютеров)
- VC ++ Redist 2012 11.0.61030.0 установлен
- VC ++ Redist 2010 10.0.40219 установлен
- плюс версии 2005, 2008 redist
(также не работает при чистой установке Windows 7)
Application failed to start because it could not find or load the QT platform plugin «windows»
Поэтому я следовал инструкциям и добавил каталог .platforms /, и добавил qwindows.dll (также добавили qminimal.dll и qoffscreen.dll); Я также добавил libEGL.dll, libGLESv2.dll (хотя я не нуждаюсь в них, я не думаю)
После того, как я добавил qoffscreen.dll, теперь я получаю дополнительное сообщение: Available platform plugins are: offscreen
Если я запускаю Dependency Walker, я получаю эту ошибку в списке:
а затем дальше вниз:
Любые идеи, как исправить эту проблему DLL?
Решение
Ошибка вызвана тем, что программа не может найти qwindows.dll
qwindows.dll должен быть в папке с именем platforms так что путь от вашего исполняемого файла до DLL platforms/qwindows.dll
Тогда как в моем случае этого было недостаточно. Я также должен был добавить следующую строку в начале моего main ()
Тогда все заработало.
Другие решения
Я получил эту проблему и как я решил ее:
Используется ходок зависимостей (http://www.dependencywalker.com/ ), чтобы увидеть точный путь необходимых DLL. Попробуйте, потому что и QtCreator, и QT framework имеют одинаковые dll, и вы должны точно указать, какие из них используются.
Я скопировал все необходимые библиотеки в ту же папку, что и приложение.
Я скопировал папку платформы из QT framework / plugins и скопировал ее в ту же папку, что и приложение. Теперь приложение содержит также плагин / платформа / папка со всеми своими библиотеками
И самый важный шаг в моем случае — это создать файл с именем qt.conf в той же папке, что и приложение. Этот файл должен содержать путь к плагинам. Мой файл qt.conf содержит:
[Путь] Библиотеки = .. / Библиотека / QtCreator
Плагины = плагины
Импорт = импорт
Qml2Imports = QML
Приложение может работать на хост-системе, так как Qt bin путь в системе PATH переменная.
Существует стандартный инструмент Qt для развертывания приложений Qt в Windows. windeployqt чтобы иметь возможность запускать приложение на целевых машинах, на которых не установлен Qt.
Этот инструмент заботится о зависимостях Qt DLL, делает копию platforms\qwindows.dll а также делает копию библиотек, которые вы не можете обнаружить с помощью Зависимость Уокер, так как подключаемые модули изображений и некоторые другие библиотеки DLL загружаются во время выполнения.
Вам даже не нужно иметь свой Qt bin папка в вашей среде PATH , Самое простое развертывание:
- копия построена exe бинарный в новую папку
- открыть cmd консоль в этой папке
- вызов windeployqt используя полный путь (если его нет в системе PATH ) и укажите свой исполняемый файл, например:
В результате у вас есть в этой папке все необходимые библиотеки Qt DLL для запуска приложения.
Инструмент windeployqt имеет различные варианты. Он также может позаботиться о развертывании qml связанные файлы.
Конечно, у вас также могут быть проблемы с распространяемыми MSVC, но они должны быть развернуты отдельно и установлены один раз для каждой системы.
Только некоторые сторонние библиотеки должны быть скопированы вручную, если они используются, например, OpenSSL.
У меня была та же проблема: «Приложение не удалось запустить, потому что оно не могло найти или загрузить плагин платформы QT». «Окна». Я исправил это, скопировав следующие файлы в папку app.exe (исполняемый файл моего приложения),
Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll и каталог «платформы» с qminimal.dll, qoffscreen.dll, qwindows.dll.
Я надеюсь, что это поможет кому-то
Обратите внимание, что эта проблема может также быть вызвано, если путь поиска qwindows.dll который закодирован в вашем приложении, включает путь, по которому вы установили Qt. Рассмотрим следующий сценарий:
- Я устанавливаю Qt в c:\Qt\.
- Я разрабатываю приложение и правильно разверну его где-то еще.
- Он работает на любом компьютере правильно, потому что он включает в себя qwindows.dll в подкаталоге.
- Я обновляю свой локальный Qt до новой версии.
- Я пытаюсь снова запустить свое приложение.
Результатом является эта ошибка, потому что qwindows.dll в c:\Qt\. найден до тот в его локальном каталоге, и это несовместимо с этим. Очень надоедливый.
Решение состоит в том, чтобы разместить файл qt.conf в той же директории, что и ваш exe-файл. Я не знаю, как этого избежать. Если вы использовали инструмент windeployqt.exe для развертывания приложения, поэтому у вас есть подкаталог с именем platforms тогда этого достаточно:
Для людей, которые имеют эту проблему в будущем — у меня есть грязный маленький взлом, работал на меня. Попробуйте на свой страх и риск.
Выполните все шаги в Первоначальном развертывании (Быстрое и грязное) [http://wiki.qt.io/Deploy_an_Application_on_Windows]
- Закройте Qt Creator.
- Скопируйте следующее в C: \ Deployment \ Выпускная версия MyApp.exe Все файлы .dll из
C: \ Qt \ 5.2.1 \ mingw48_32 \ bin \ Все папки из
C: \ Qt \ 5.2.1 \ mingw48_32 \ Plugins \ - (Если вы использовали QML) Все папки из C: \ Qt \ 5.2.1 \ mingw48_32 \ qml \ Переименуйте C: \ Qt \ в C: \ QtHidden \ (Это превращает ваш компьютер в чистую среду, такую же, как не установлена Qt).
- Запустите C: \ Deployment \ MyApp.exe.
Теперь для взлома —
- Дублируйте вашу папку для безопасности
- Если ваш файл был в / cat / Deployment, перейдите в / cat
- Теперь удалите папку развертывания, пока EXE-файл все еще работает.
- Он скажет вам, что он не может удалить определенные файлы, так что пропустите (или пропустите все)
- То, что у вас осталось, это список всех файлов .dll, которые ваш .exe фактически использовал и не мог удалить: список всех файлов и только те файлы, которые вам нужно сохранить.
Вы можете закрыть файл .exe сейчас.
Чтобы проверить, нормально ли оно разворачивается, перейдите в папку, где вы его установили, скажем, C: / Qt и переименуйте его в C: / NotQt (в основном, делает Qt невидимым для системы).
Если он работает сейчас, он будет развертываться в других системах чаще, чем нет.
Ну, я решил свою проблему, хотя я не уверен, в чем разница:
Я скопировал каждую DLL из моего каталога qt в ./ и ./platforms моего каталога приложения.
Приложение прошло ошибку, но затем потерпело крах.
VERSION.dll вызывал сбой (отмеченный в обходчике зависимостей), поэтому я удалил его из обоих мест.
Приложение запустилось, поэтому я систематически удалял все ненужные DLL.
Это вернуло меня в прежнее состояние.
Затем я удалил свое приложение и переустановил (оставив только файл ./platforms/qwindows.dll), приложение работает правильно.
Таким образом, все, что я могу предположить, — то, что у меня была неправильная версия qwindows.dll в каталоге платформ.
Я получил ту же проблему:
1. он может работать в VS2010;
2. он может работать в папке с файлами как:
app.exe
\ Платформы \ qwindows.dll
…
- но он не смог загрузить qwindows на чистую машину с той же ОС, что и у разрабатываемой.
Qt 5.1.1: Не удалось запустить приложение, потому что плагин платформы & quot; windows & quot; пропал, отсутствует
Редактировать:
Некоторые люди начали отмечать мой вопрос как дубликат. Не забывайте, что когда я задавал этот вопрос, было много похожих вопросов (см., Например, список ниже). Тем не мение, ни один из этих ответов не решил мою проблему. После долгих поисков я нашел комментарий который был проигнорирован всеми пользователями, указывающими на отсутствующую библиотеку. Теперь, спустя много месяцев, комментарий был изменен на ответ. Однако, когда я ответил на этот вопрос msyself, я намеревался помочь другим людям, напрямую предоставив решение. Это не должно быть забыто, и пока мой ответ помог многим людям. Поэтому мой вопрос точно не дубликат. Кстати: принятый ответ по приведенной ссылке сверху не решает проблему!
Да, я использовал поиск:
Однако в моем случае проблема все еще сохраняется. Я использую Qt 5.1.1 с Visual Studio 2012 и разработал свое приложение для Windows 7 с Qt Creator 2.8.1. Приложение скомпилировано в режиме «Release» и может быть выполнено, если непосредственно запущено с Qt Creator.
Однако при запуске из папки «release» я получаю следующее сообщение:
Не удалось запустить это приложение, так как не удалось найти или загрузить
Плагин платформы Qt «windows». Доступные плагины платформы:
минимальный, закадровый, окна.
Структура папки выглядит следующим образом:
Платформы — это папка, напрямую скопированная из Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ Plugins \ платформы в том числе, например, qwindows.dll. Не имеет значения, переименую ли я его в «платформу», как это сделали некоторые другие пользователи. Qt до сих пор не находит «окна плагинов платформы», где моя ошибка?
Решение
Хорошо, как размещено здесь https://stackoverflow.com/a/17271172/1458552 без особого внимания со стороны других пользователей:
libEGL.dll скучал! Несмотря на то, что об этом не сообщалось при попытке запустить приложение (сообщалось обо всех других * .dll, таких как Qt5Gui.dll).
Другие решения
Я создал каталог платформ рядом с моим exe-местоположением и поместил qwindows.dll внутрь, но я все еще получил «Не удалось загрузить плагин платформы« windows ». Доступные платформы: ошибка: windows».
Я скопировал qwindows.dll из C: \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ platform, который не является правильным местом. Я посмотрел на журнал отладки, запущенный в Qt Creator, и обнаружил, что мое приложение смотрело в C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platform, когда оно запускалось в отладчике.
Когда я скопировал из C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ платформы, все работало нормально.
Я нашел неожиданное, но интуитивно понятное решение. Если вы скопируете и вставите файл qwindows.dll, находящийся в корзине того компилятора, который вы использовали для выпуска своего приложения, в папку с именем «платформы», вы можете затем переместить эту папку в тот же каталог, что и ваше приложение, и, как по волшебству, он работает.
Также еще один полезный совет, Qt поставляется с консольными приложениями платформы, которые будут добавлять все зависимости (включая такие, как qwindows.dll и libEGL.dll) в папку вашего развернутого исполняемого файла. Приложение для Windows называется windeployqt, а документацию можно найти здесь. http://doc.qt.io/qt-5/windows-deployment.html . Это приложение сэкономило мне так много времени, и это действительно правильный способ развернуть ваш исполняемый файл, чтобы ничего не пропустить.
Настройка QT_QPA_PLATFORM_PLUGIN_PATH переменная окружения% QTDIR% \ plugins \ platform \ работал на меня .
Также было упомянуто Вот а также Вот .
Я столкнулся с этим, и ни один из ответов, которые я мог найти, не исправил это для меня.
Мой коллега установил Qt (5.6.0) на своем компьютере по адресу:
C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ плагинов
У меня Qt (5.6.2) установлен в том же месте.
Я узнал из этого поста: http://www.tripleboot.org/?p=536 , что Qt5Core.dll имеет расположение для плагинов, записанных в него при первой установке Qt.
Так как каталоги моего коллеги и моего Qt были одинаковыми, но были установлены разные версии Qt, необходим другой файл qwindows.dll. Когда я запускал exe-файл, развернутый им, он использовал мой файл C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins \ platform \ qwindows.dll вместо файла, расположенного рядом с исполняемым файлом в подпапке. \ Platform.
Чтобы обойти это, я добавил в приложение следующую строку кода, которая, кажется, заставляет его искать рядом с exe-файлом подпапку «платформы», прежде чем он ищет путь в Qt5Core.dll.
Я добавил приведенную выше строку в метод main перед вызовом QApplication следующим образом:
создать реж platforms и скопировать qwindows.dll к этому, platforms а также app.exe находятся в том же направлении
cd app_dir
mkdir platforms
xcopy qwindows.dll platforms\qwindows.dll
Структура папок
+ app.exe
+ platforms\qwindows.dll
У меня была эта проблема при использовании QT 5.6, Anaconda 4.3.23, python 3.5.2 и pyinstaller 3.3.
Я создал программу на Python с интерфейсом, разработанным с использованием QTcreator, но мне пришлось развернуть его на других компьютерах, поэтому мне нужно было создать исполняемый файл с использованием pyinstaller.
Я обнаружил, что проблема была решена на моем компьютере, если я установил следующие переменные среды:
QT_QPA_PLATFORM_PLUGIN_PATH:% QTDIR% \ plugins \ platform \
QTDIR: C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Library
Но это решение работало только на моем ПК, на котором были установлены conda и qt в этих папках.
Чтобы решить эту проблему и заставить исполняемый файл работать на любом компьютере, мне пришлось отредактировать «.spec» (файл, сначала сгенерированный pyinstaller), чтобы включить следующую строку:
Данные = [(
‘C: \ Miniconda3 \ pkgs \ Qt-5.6.2-vc14_3 \ Library \ Plugins \ платформы * .dll’,
«платформы»),]
Это решение основано на ответах Джима Г. и CrippledTable
У меня была та же проблема, и я решил ее, применив несколько вещей.
Первое, если это программа, которую вы сделали с Qt.
В папке (в моем случае) «C: \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins» вы найдете другие папки, одна из которых — «платформы». Эта папка «платформы» будет скопирована рядом с вашим исполняемым файлом .exe. Теперь, если вы получаете сообщение об ошибке 0xc000007d, значит, вы не скопировали версию, которая была, поскольку она может быть 32-битной или 64-битной.
Если вы продолжите с ошибками, то вам не хватает больше библиотек. С помощью программы «Dependency Walker» вы можете обнаружить некоторые из пропавших папок. Конечно, он укажет вам, что вам нужен NVIDIA .dll, и скажет вам местоположение.
Другой способ, вместо того, чтобы использовать «Зависимость Уокер» — скопировать все .dll из вашей папки «C: \ Windows \ System32» рядом с исполняемым файлом. Запустите ваш .exe и, если все загружается хорошо, и у вас нет места в библиотеках dll, которые вам не нужны или не используются, используйте программу .exe со всеми вашими опциями, и, не закрывая .exe, вы удалите все. dll, что вы только что скопировали рядом с .exe, поэтому, если эти .dll используются вашей программой, система не позволит вам стереть, а только удалит ненужные.
Я надеюсь, что это решение вам подходит.
Помните, что если ваша операционная система 64-битная, библиотеки будут в папке System32, а если ваша операционная система 32-битная, они также будут в папке System32. Это происходит так, что нет проблем совместимости с программами, которые 32-битные на 64-битном компьютере.
Папка SysWOW64 содержит 32-битные файлы в качестве резервной копии.