Меню Рубрики

Qt platform plugin windows что это

Не удалось запустить приложение, потому что не удалось найти или загрузить плагин платформы QT » windows»

Я просмотрел все вопросы, которые, по-видимому, связаны с переполнением стека, и ни одно из решений, похоже, не помогает мне.

Я создаю приложение Qt с этой настройкой:

  • Windows 7 Professional 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
  • .pri использует QMAKE_CXX += /D_USING_V110_SDK71_

Я могу создавать и запускать свою программу на моей машине разработки (отмечено выше); я также могу установить и запустить пакет из каталога Program Files на машине dev.

когда я устанавливаю и запускаю на машине 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»

поэтому я последовал инструкциям и добавил a .платформы / каталог и добавлены qwindows.dll (также добавлен qminimal.dll и qoffscreen.dll); я также добавил libEGL.dll, libGLESv2.dll (хотя я не должен нуждаться в них, я не думаю)

как только я добавил qoffscreen.dll теперь я получаю дополнительные сообщение: Available platform plugins are: offscreen

если я запускаю Dependency Walker, я получаю эту ошибку в списке:

а затем дальше вниз получите:

есть идеи, как исправить эту проблему dll?

11 ответов

ошибка вызвана тем, что программа не может найти qwindows.dll

qwindows.dll должен быть в папке с именем platforms чтобы путь от исполняемого файла к dll был platforms/qwindows.dll

тогда как в моем случае этого было недостаточно. Мне также пришлось добавить следующую строку в начале моего main ()

потом все работало.

Я получил эту проблему и как я ее решал:

используется зависимость walker (http://www.dependencywalker.com/), чтобы увидеть точный путь необходимых библиотек DLL. Попробуйте, потому что оба QtCreator и Qt framework имеют одинаковые библиотеки DLL, и вы должны точно указать используемые. Я скопировал все DLL, необходимые в той же папке, что и приложение.

Я скопировал платформы папок из Qt framework / plugins и скопировал их в ту же папку, что и приложение. Теперь приложение comtained также плагин / платформа / папка со всеми своими DLL

и самый важный шаг в моем случае-создать файл с именем qt.Conf в той же папке, что и приложение . Этот файл должен содержать путь к плагинам. Мой qt.файл conf содержит:

[путь]
Библиотеки.=./ lib / qtcreator
Плагины=Плагины
Imports=imports
Qml2Imports=QML в

приложение может работать на хост-системе, так как Qt bin путь в системе PATH переменной.

существует стандартный инструмент Qt для развертывания приложений Qt в Windows windeployqt чтобы иметь возможность запускать приложение на целевых компьютерах, на которых не установлен Qt.

этот инструмент заботится о зависимостях Qt DLL, делает копию platforms\qwindows.dll а также делает копию библиотек, которые вы не можете обнаружить с помощью Зависимость Walker, так как плагины изображений и некоторые другие DLL загружаются во время выполнения.

вам даже не нужно иметь свой Qt bin папка в среде PATH . Самое простое развертывание:

  • копировать причине exe двоичный файл в новую папку
  • открыть cmd консоль в этой папке
  • вызов windeployqt используя полный путь (если он не находится в системе PATH ) и предоставить исполняемый файл, для образец:

в результате у вас есть в этой папке все необходимые библиотеки Qt для запуска приложения.

инструмент windeployqt имеет различные варианты. Он также может позаботиться о размещении qml связанных файлов.

конечно, вы можете иметь также проблемы с MSVC redistributables, но они должны быть развернуты отдельно и установлены один раз в системе.

только некоторые сторонние библиотеки должны быть скопированы вручную, если они используются, например OpenSSL.

У меня была та же проблема «приложение не удалось запустить, потому что оно не смогло найти или загрузить плагин платформы QT» windows» Я исправил это, скопировав файлы ниже в приложение.exe (мой исполняемый файл приложения) папка,

Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll и каталог «платформы» с qminimal.dll, qoffscreen.dll, qwindows.файл DLL.

Я надеюсь, что это поможет кому-то

Примечание. эта проблема может и быть вызвано, если путь поиска для qwindows.dll то, что закодировано в вашем приложении, включает путь, по которому вы установили Qt. Рассмотрим следующий сценарий:

  1. я устанавливаю Qt в c:\Qt\.
  2. я разрабатываю приложение и правильно развертываю его в другом месте.
  3. он работает на любом компьютере правильно, потому что он включает в себя qwindows.dll в подкаталоге.
  4. обновить местных Qt в новый версия.
  5. я снова пытаюсь запустить приложение.

результатом является эта ошибка, потому что qwindows.dll на c:\Qt\. не найдено до тот, который находится в локальном каталоге, и он несовместим с ним. Очень раздражать.

решение заключается в размещении файла qt.conf в том же каталоге, что и ваш exe-файл. Я не знаю, как этого избежать. Если вы использовали инструмент windeployqt.exe для развертывания приложения, поэтому у вас есть подкаталог под названием platforms , то это достаточно:

для людей, у которых есть эта проблема в будущем — у меня есть грязный маленький хак, работал на меня. Попробовать на свой страх и риск.

выполните все шаги в начальном развертывании (быстро и грязно) [http://wiki.qt.io/Deploy_an_Application_on_Windows]

  1. Закрыть Qt Creator.
  2. скопируйте следующее в C:\Deployment\ версия выпуска MyApp.exe все .dll файлы из C:\Qt\5.2.1\mingw48_32\bin\ все папки от C:\Qt\5.2.1\mingw48_32\plugins\
  3. (если вы использовали QML) все папки из C:\Qt\5.2.1\mingw48_32\qml \ переименовать C:\Qt\ to C:\QtHidden\ (это превращает ваш компьютер в чистую среду, как и тот, который не имеет Qt установлен).
  4. Запуск C:\Deployment\MyApp — . исполняемый.
  1. дублировать папку для безопасности
  2. если ваш файл был в/cat / Deployment, перейдите в /cat удалить Папка развертывания во время.exe все еще работает.
  3. он скажет вам, что он не может удалить некоторые файлы, так сказать, пропустить(или не пропустить)
  4. то ,что у вас осталось, — это список всех.dll-файлы, которые ваш .exe фактически использовал и не мог удалить: список всех файлов и только файлы, которые вам нужно сохранить.

вы можете закрыть .EXE-файл сейчас. Чтобы проверить, нормально ли он развертывается, перейдите в папку, в которой вы его установили, скажем C:/Qt и переименовать его в C:/NotQt (в основном сделайте Qt невидимым для системы). Если он работает сейчас, он будет развертываться на других системах чаще, чем нет.

Ну, я решил свою проблему, хотя я не уверен, в чем разница:

Я скопировал каждую dll из моего каталога qt в оба ./ и. / платформы моего каталога приложений.

приложение прошло мимо ошибки, но затем разбилось.

версия.dll вызывала сбой (отмечено в dependency walker), поэтому я удалил его из обоих мест.

приложение запустилось, поэтому я систематически удалял все ненужные dll.

этот вернула меня в прежнее состояние.

затем я удалил свое приложение и переустановил (только с помощью ./платформ/qwindows.dll файл остается), приложение работает правильно.

поэтому все, что я могу предположить, это то, что у меня была неправильная версия qwindows.dll в каталоге платформ.

У меня такая же проблема: 1. он может работать в VS2010; 2. он может работать в папке с файлами как: приложение.исполняемый \платформ\qwindows.файл DLL .

  1. но не удалось загрузить qwindows на чистую машину с той же ОС, что и развивающаяся.

решено просто переместить папку платформы в плагины: приложение.исполняемый Плагины\платформ\qwindows.dll файлы

плюс: qwindows.dll можно переименовать как угодно, как это запрашивается плагином interafce: qt_plugin_query_metadata()

отсутствует qwindows.dll, которые обычно должны быть в платформах, если вы не добавляете:

Если вы не делаете этого кстати, и поместите свои qwindows.dll где — то еще Qt будет искать ваш путь для DLL, что может занять много времени (10s-несколько минут)!

для меня необходимо указать QT_QPA_PLATFORM_PLUGIN_PATH каталог платформ, а затем он работал.

для чего это стоит, это решение также было упоминается на GitHub.

пробовал все вышеперечисленное-оказалось для меня это просто потому, что у меня не было главного Qt библиотеки в apps папку

Источник

Не удалось запустить приложение, так как не удалось найти или загрузить плагин платформы 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. Рассмотрим следующий сценарий:

  1. Я устанавливаю Qt в c:\Qt\.
  2. Я разрабатываю приложение и правильно разверну его где-то еще.
  3. Он работает на любом компьютере правильно, потому что он включает в себя qwindows.dll в подкаталоге.
  4. Я обновляю свой локальный Qt до новой версии.
  5. Я пытаюсь снова запустить свое приложение.

Результатом является эта ошибка, потому что qwindows.dll в c:\Qt\. найден до тот в его локальном каталоге, и это несовместимо с этим. Очень надоедливый.

Решение состоит в том, чтобы разместить файл qt.conf в той же директории, что и ваш exe-файл. Я не знаю, как этого избежать. Если вы использовали инструмент windeployqt.exe для развертывания приложения, поэтому у вас есть подкаталог с именем platforms тогда этого достаточно:

Для людей, которые имеют эту проблему в будущем — у меня есть грязный маленький взлом, работал на меня. Попробуйте на свой страх и риск.

Выполните все шаги в Первоначальном развертывании (Быстрое и грязное) [http://wiki.qt.io/Deploy_an_Application_on_Windows]

  1. Закройте Qt Creator.
  2. Скопируйте следующее в C: \ Deployment \ Выпускная версия MyApp.exe Все файлы .dll из
    C: \ Qt \ 5.2.1 \ mingw48_32 \ bin \ Все папки из
    C: \ Qt \ 5.2.1 \ mingw48_32 \ Plugins \
  3. (Если вы использовали QML) Все папки из C: \ Qt \ 5.2.1 \ mingw48_32 \ qml \ Переименуйте C: \ Qt \ в C: \ QtHidden \ (Это превращает ваш компьютер в чистую среду, такую ​​же, как не установлена ​​Qt).
  4. Запустите C: \ Deployment \ MyApp.exe.
  1. Дублируйте вашу папку для безопасности
  2. Если ваш файл был в / cat / Deployment, перейдите в / cat
  3. Теперь удалите папку развертывания, пока EXE-файл все еще работает.
  4. Он скажет вам, что он не может удалить определенные файлы, так что пропустите (или пропустите все)
  5. То, что у вас осталось, это список всех файлов .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

  1. но он не смог загрузить qwindows на чистую машину с той же ОС, что и у разрабатываемой.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Qt opensource windows x64
  • Qt creator системные требования windows
  • Qt creator python windows
  • Qr код чтение windows
  • Qr код считать windows phone