Изменить: некоторые люди начали отмечать мой вопрос как дубликат. Не забывайте, что когда я задавал этот вопрос, существовало много похожих вопросов (см., Например, список ниже). Однако ни один из этих ответов не решил мою проблему . После долгого поиска я нашел комментарий, который игнорировали все пользователи, указывающие на отсутствующую библиотеку. Теперь, много месяцев спустя, комментарий был заменен на ответ. Однако, когда я сам ответил на этот вопрос, я намеревался помочь другим людям, напрямую предоставив решение. Об этом нельзя забывать, и пока что мой ответ помог многим людям. Поэтому мой вопрос точно не повторяется. Кстати: принятый ответ по указанной сверху ссылке не решает проблему !
Да, пользовался поиском:
Не удалось загрузить плагин платформы "windows". Доступные платформы: Ошибка
Развертывание приложения Qt C ++ из Visual Studio ошибка qwindows.dll
не удалось загрузить плагин платформы "windows" Доступные платформы: windows, минимальный
Однако в моем случае проблема все еще сохраняется. Я использую Qt 5.1.1 с Visual Studio 2012 и разработал свое приложение для Windows 7 с Qt Creator 2.8.1. Приложение скомпилировано в режиме «Release» и может быть выполнено, если оно запущено напрямую с Qt Creator.
Однако при запуске из папки «release» я получаю следующее сообщение:
Это приложение не удалось запустить, потому что оно не могло найти или загрузить "окна" плагина платформы Qt. Доступные плагины платформы: минимальные, закадровые, окна.
Структура папки выглядит так:
release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Платформы - это папка, напрямую скопированная из Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platform, включая, например, qwindows.dll. Не имеет значения, переименовал ли я его в «платформу», как это сделали некоторые другие пользователи. Qt все еще не находит "окна плагинов платформы", в чем моя ошибка?
источник
Depends
, который покажет вам зависимости DLL и проблемы, связанные с ними. Вы можете использовать этот инструмент для статического анализа файла exe или dll, а также использовать его для отображения запуска приложения с динамически загружаемыми библиотеками DLL.Ответы:
Хорошо, как написано здесь https://stackoverflow.com/a/17271172/1458552 без особого внимания со стороны других пользователей:
LibEGL.dll не хватало! Хотя об этом не сообщалось при попытке запустить приложение (сообщалось обо всех других * .dll, таких как Qt5Gui.dll).
источник
Я создал каталог платформ рядом с местом расположения исполняемого файла и поместил внутрь 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 \ platform, все работало нормально.
источник
В выпуске, вероятно, отсутствует библиотека / плагин или библиотека находится в неправильном каталоге или из неправильного каталога.
Предполагаемый ответ Qt: используйте windeployqt . см. последний абзац для объяснения
Ручной ответ:
Создайте папку с именем «platform» в том же каталоге, что и файл application.exe. Скопируйте и вставьте qwindows.dll, который находится в каталоге / bin того компилятора, который вы использовали для выпуска своего приложения, в папку «platform». Как по волшебству это работает. Если .dll там нет, проверьте plugins / platform / (где plugins / находятся в том же каталоге, что и bin /) <- Комментарий PfunnyGuy.
Похоже, что распространенная проблема заключается в том, что .dll был взят из неправильного бункера компилятора. Обязательно скопируйте файл qwindows.dll из того же компилятора, который использовался для выпуска вашего приложения.
Qt поставляется с консольными приложениями платформы, которые будут добавлять все зависимости (включая такие, как qwindows.dll и libEGL.dll) в папку вашего развернутого исполняемого файла. Это предполагаемый способ развертывания вашего приложения, поэтому вы не пропустите ни одной библиотеки (что является основной проблемой для всех этих ответов). Приложение для Windows называется windeployqt . Вероятно, для каждой ОС существует приложение консоли развертывания.
источник
У меня сработала установка
QT_QPA_PLATFORM_PLUGIN_PATH
переменной среды на% QTDIR% \ plugins \ platform \ .Об этом также упоминалось здесь и здесь .
источник
Я столкнулся с этим, и ни один из ответов, которые я не мог найти, не помог мне.
У моего коллеги Qt (5.6.0) установлен на его машине по адресу: C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins.
У меня 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.
Чтобы обойти это, я добавил в приложение следующую строку кода, которая, кажется, вынуждает его искать подпапку «платформы» рядом с исполняемым файлом, прежде чем искать путь в Qt5Core.dll.
Я добавил эту строку к основному методу перед вызовом QApplication следующим образом:
источник
qwindowsd.dll
каталог `platform`, если вы оказались в ситуации, когда высоздать каталог
platforms
и скопироватьqwindows.dll
в него,platforms
иapp.exe
находятся в том же каталогеcd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll
Структура папки
+ app.exe + platforms\qwindows.dll
источник
qwindows.dll
в каталогеplatforms
. Я публикую это, потому что исправил. Вы делаете тест перед голосованием против?Нашел другое решение. Создайте qt.conf в папке приложения как таковой:
А затем скопируйте папку плагинов в папку приложения, и у меня все работает.
источник
Большинство этих ответов содержат хорошую (правильную) информацию, но в моем случае чего-то не хватало.
Мое приложение построено как библиотека (dll) и вызывается приложением, отличным от Qt. Раньше я
windeployqt.exe
устанавливал библиотеки Qt, платформы, плагины и т. Д. В установочном каталоге, но платформа все равно не находила. После некоторых экспериментов я понял, что рабочий каталог приложения находится в другой папке. Итак, я взял каталог, в котором «жила» dll,GetModuleHandleExA
и добавил этот каталог в путь к библиотеке Qt во время выполнения, используяЭто сработало для меня.
источник
Для меня решением было исправить
PATH
переменную. Он имел Anaconda3 \ Library \ bin в качестве одного из первых путей. Этот каталог содержит некоторые библиотеки Qt, но не все. Видимо, это проблема. Перемещение C: \ Programs \ Qt \ 5.12.3 \ msvc2017_64 \ bin на передний планPATH
решило проблему для меня.источник
У меня была эта проблема при использовании QT 5.6, Anaconda 4.3.23, python 3.5.2 и pyinstaller 3.3. Я создал программу на Python с интерфейсом, разработанным с использованием QTcreator, но мне пришлось развернуть ее на других компьютерах, поэтому мне нужно было создать исполняемый файл с помощью pyinstaller.
Я обнаружил, что проблема была решена на моем компьютере, если я установил следующие переменные среды:
Но это решение работало только на моем ПК, на котором в этих папках были установлены conda и qt.
Чтобы решить эту проблему и заставить исполняемый файл работать на любом компьютере, мне пришлось отредактировать ".spec" (файл, сначала созданный pyinstaller), включив в него следующую строку:
Это решение основано на ответах Джима Г. и CrippledTable.
источник
У меня была такая же проблема, и я решил ее, применив несколько вещей. Первый, если это программа, которую вы сделали на Qt.
В папке (в моем случае) «C: \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins» вы найдете другие папки, одна из них - «платформы». Эта папка "платформы" будет скопирована рядом с исполняемым файлом .exe. Теперь, если вы получите ошибку 0xc000007d, это значит, что вы не скопировали ту версию, которая была, поскольку она может быть 32-битной или 64-битной.
Если вы продолжите с ошибками, вам не хватает дополнительных библиотек. С помощью программы «Dependency Walker» вы можете обнаружить некоторые из недостающих папок. Конечно, он укажет вам, что вам нужен NVIDIA .dll, и сообщит вам его местоположение.
Другой способ вместо использования «Dependency Walker» - скопировать все .dll из папки «C: \ Windows \ System32» рядом с исполняемым файлом. Запустите свой .exe, и если все загружается хорошо, поэтому у вас нет места в библиотеках dll, которые вам не нужны или не используются, используйте программу .exe со всеми вашими параметрами и, не закрывая .exe, который вы делаете, сотрите все. dll, который вы только что скопировали рядом с .exe, поэтому, если эти .dll используются вашей программой, система не позволит вам стереть, а удалит только те, которые не нужны.
Надеюсь, это решение вам пригодится.
Помните, что если ваша операционная система 64-битная, библиотеки будут в папке System32, а если ваша операционная система 32-битная, они также будут в папке System32. Это происходит для того, чтобы не возникало проблем совместимости с 32-битными программами на 64-битном компьютере. Папка SysWOW64 содержит 32-битные файлы в качестве резервной копии.
источник
Для платформы MinGW и если вы компилируете цель отладки вручную созданным специально написанным CMakeLists.txt, вам также необходимо добавить qwindows.dll в каталог платформы. Исполняемый файл windeployqt хорошо справляется со своей работой, но кажется, что по какой-то странной причине сборка CMake также нуждается в варианте выпуска. Таким образом, было бы лучше иметь и qwindows.dll, и qwindowsd.dll в каталоге вашей платформы. Я не заметил такого же странного результата при импорте проекта CMake в QtCreator и последующем запуске процедуры сборки. Компиляция в командной строке проекта CMake, похоже, вызывает зависимость qwindows.dll, если правильный для цели отладки установлен на месте (qwindowsd.dll)
источник
Используйте этот командный файл: RunWithQt.bat
RunWithQt gui.exe
из командной строкиисточник
Если у вас установлена Anaconda, я рекомендую вам удалить ее и попробовать установить пакет python из исходного кода, я исправил эту проблему таким образом
источник
Приложение qtbase / bin / windeployqt.exe автоматически развертывает ваше приложение. Если вы запускаете приглашение с правильно установленными переменными envirenmentvariables, оно развертывается в текущем каталоге. Вы найдете пример сценария:
источник
Допустим, вы хотели иметь портативные CGAL-Demos . Таким образом, у вас будет папка «CGAL», а в ней 1 подпапка с именем «lib»: сюда идут все (общие) вспомогательные DLL для любых программ в папке CGAL. В нашем примере это будет Dll-Download : просто разархивируйте в каталог «lib». Чем дальше вы прокручиваете страницу с демонстрациями , тем более впечатляющим будет контент. В моем случае многогранник-демонстрация казался правильным. Если это работает на моем ноутбуке 10+, я впечатлен. Итак, я создал папку «demo» в каталоге «CGAL» вместе с «lib». Теперь создайте в этой папке .cmd-файл. Я назвал свой "Polyhedron.cmd". Итак, у нас есть такая структура каталогов:
В этом небольшом примере «Polyhedron.cmd» содержит следующий текст:
Разумеется, все скрипты могут быть одинаковыми, за исключением последней строки. Единственное предостережение: «Окно DOS» остается открытым, пока вы используете реальную программу. Закройте окно оболочки, и вы также убьете * .exe. Где бы вы ни копировали папку "CGAL", странная "% ~ dp0" -wriggle представляет полный путь к * .cmd-файлу, который мы запустили, с завершающим символом "\". Таким образом, «% me% lib» - это всегда полный путь к самой библиотеке (в моем случае «CGAL \ lib»). Следующие две строки сообщают Qt, где находятся его "исполняемые" файлы. Это будет как минимум файл "qwindows.dll" для программ Windows-Qt плюс любое количество * .dll. Если я правильно помню, в Dll-библиотеке (по крайней мере, когда я ее скачал) была небольшая «ошибка», поскольку она содержит каталог «платформ» с qwindows.dll в нем.перейти в «плагины». Если приложение Qt, любое приложение Qt не находит «qwindows.dll», оно не может найти «окна». И он ожидает, что он находится в каталоге с именем «platform» в каталоге «plugins», который ему должна сообщить ОС, в которой он работает ... и если «QT_PLUGIN_PATH» не совсем указывает на все вспомогательные DLL, которые вы При необходимости некоторые Qt-программы будут работать без проблем. А некоторые жалуются на отсутствие * .dll, о которых вы никогда не слышали ...
источник
Для тех, кто пришел с QT версии 5.14.0, мне потребовалось 2 дня, чтобы найти это сообщение об ошибке:
https://wiki.qt.io/Qt_5.14.0_Known_Issues
Так что имейте в виду. Использование windeployqt с MinGW приведет к той же ошибке, что указана здесь.
источник