Qt не запускается приложение
Я построил приложение Qt 5, используя Qt Creator на Windows 7 64 bit (используя msvc 2010). Приложение отлично работает на моем компьютере, но оно не будет работать на других компьютерах.
Я скопировал все .dlls, которые были показаны как отсутствующие в Dependency Walker , в папку программы, и ошибки нет, но приложение просто не запускается.
Я тестировал его на Windows XP и Windows 7 64 и 32 битах.
Что я могу сделать, чтобы узнать, что случилось?
UPDATE: я установил Qt 4.8.4 (vs 2008) и msvc 2008 express, скомпилировал его, и он работает на других компьютерах с .dlls из Qt4. может быть, кто-то знает, в чем проблема с Qt5.
У меня есть консольное приложение, которое находится на моем рабочем столе. Я поставил его на запланированную задачу, чтобы он выполнялся каждые 20 минут бесконечно. Я выключил auto sleep/hibernate., затем оставил свой компьютер включенным и заблокировал рабочий стол на выходные (2-3 дней). Мое.
У меня была та же проблема.
Вам необходимо включить каталог "platform", содержащий qwindows.dll и qminimal.dll, в свой исполняемый каталог. Вы можете найти каталог в папке "plugins".
Если вы не добавите это, ваше приложение загрузится, а затем завершит работу с кодом возврата 0. Dependency walker не может вам помочь, потому что DLLs загружаются с задержкой.
Я добавил libEGL.dll в каталог программы, и теперь он работает нормально.
Я предполагаю , что libEGL.dll динамически загружается одним из других DLLs - вероятно, libGLESv2.dll , исходя из того, что из всех известных зависимостей он имеет наиболее похожее имя (!) - И что динамическая загрузка не является чем-то, что может обнаружить Dependency Walker.
Я также столкнулся с той же проблемой и узнал, что MinGW GCC 4.7 не совместим с Qt 5.0 и выше из этого поста . Я использовал тот же подход, что и вы, и переключился на Qt Creator 4.8, который сработал.
Сценарий
- QT Создатель 3.3.2
- QT 5.4.1 (MSVC 2010, 32 бит), Windows 8.1 OS
- Не используется динамическая загрузка dll
- Не использовал сторонние dll
- Это приложение QTWidget.
Метод (Опробован для обоих наборов MinGW 32 бит & MSVC2012 OpenGL 32 бит)
- Получите релиз exe после сборки приложения. Скопируйте и вставьте в другую папку, где мы хотим (предположим, что Z:\abc)
- Перейдите в папку Qt kit (MinGW ИЛИ MSVC) (В моем случае : Z:\Qt\5.4\mingw491_32 (или) Z:\Qt\5.4\msvc2012_opengl)
- Поиск *.dll
- Скопируйте все DLL и вставьте его в папку exe. То есть (z:\abc)
- Запустите приложение (в моем случае оно запустилось правильно).
Во время запуска приложения удалите все скопированные файлы DLL.
6.1) При удалении windows отобразит запрос для DLL файлов, которые используется приложением (используемым файлом) , так как эти DLL были загружены изначально. Оставьте эти файлы как есть.
6.2) И другие файлы DLL будут удалены, как мы просили.
Это неправильный способ, но в некоторых случаях он может помочь.
Примечание
App Store не может закрыть мое приложение (которое я отправляю туда), если обновление существует. App Store спрашивает меня Can I close this application?. Я говорю Yes. Он зависает на несколько секунд, а затем снова спрашивает меня Can I close this application? Я видел журналы событий OSX, но там.
Как мне выполнить приложение QT на Windows explorer. Я только что скачал его, так что я все еще новичок в QT, когда я запускаю приложение через создателя QT, оно работает нормально, но когда я выполняю его на windows explorer (\QT\testingGUI-build-desktop-Qt_4_8_0__4_8_0__Release\release <-in.
Я думаю, что это должен быть какой-то DLL, который вам нужно поместить в тот же каталог, что и ваш исполняемый файл, или, может быть, даже в каталог, который находится в вашем PATH. В любом случае, я тоже использую Qt5, и я столкнусь с той же проблемой, что и вы, если не помещу их в тот же каталог, что и мой файл exe:
- vcruntime140[d].dll (библиотека MSVC)
- ucrtbase[d].dll (другая библиотека MSVC - я использую MSVC/Visual C++)
- Qt5Widgets[d].dll (библиотека Qt 5)
- Qt5Svg[d].dll (еще один Qt 5 lib)
- Qt5PrintSupport[d].dll (еще один Qt 5 lib)
- Qt5Gui[d].dll (вы уже догадались)
- Qt5Core[d].dll (да)
- msvcp150[d].dll (я считаю, что еще один распространяемый Microsoft)
Конечно, вы можете не использовать ни одну из тех библиотек Qt, которые я использую, и в этом случае они вам не понадобятся. Кроме того, у вас может быть другая цепочка инструментов, которая требует другого DLLs, но идея, я думаю, та же самая, и, кроме того, возможно, у вас такая же настройка, как у меня.
Я добавил [d] в конец каждой из этих библиотек, потому что для отладочных сборок у них есть d в конце, но для выпускных сборок их нет. Эта часть может быть или не быть одинаковой на вашей машине. Я считаю, что это установка или набор из них.
Похожие вопросы:
Я хочу запустить приложение 'Qt' на своей плате во время запуска. Он использует systemd для запуска процессов, а графический сервер-это wayland. Поскольку он использует systemd, я написал простой.
Я сделал заявление SMS. Мое приложение работает с платформы 10 на платформу 22. Но не работает на платформе 23 (so android 6 platform). Я использую Android studio. Почему мое приложение не работает.
Я играл с Qt Creator 4.5 под Linux. Мое приложение отлично строится под Linux, но если я строю в Windows, приложение всегда открывает окно консоли при запуске. Могу ли я остановить это? Я строю с.
У меня есть консольное приложение, которое находится на моем рабочем столе. Я поставил его на запланированную задачу, чтобы он выполнялся каждые 20 минут бесконечно. Я выключил auto.
App Store не может закрыть мое приложение (которое я отправляю туда), если обновление существует. App Store спрашивает меня Can I close this application?. Я говорю Yes. Он зависает на несколько.
Как мне выполнить приложение QT на Windows explorer. Я только что скачал его, так что я все еще новичок в QT, когда я запускаю приложение через создателя QT, оно работает нормально, но когда я.
Мое приложение facebook больше не работает, почему это происходит?
Я использую Qt 5 с компилятором Visual Studio. У меня есть приложение Quick 2 с бэкендом c++. Я собрал свой exe, кучу файлов dll и все плагины из Qt в одну папку. Когда я запускаю exe в этой папке в.
Мое приложение Qt будет установлено на компьютере Windows, но Qt на нем не установлен. Как мне обойти эту проблему? Обязан ли я строить огромный статический exe? Можно ли поместить Qt DLLs в ту же.
В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.
Тут расскажу о самом механизме нахождения DLL, так как Qt активно развивается и регулярно новые версии выпускает, и под каждую версию писать статью о новом наборе DLL накладно.
В качестве среды для разработки используется Qt 5.2.0 for Windows 32-bit (MinGW 4.8). Для версий не с компилятором MinGW алгоритм решение проблемы может быть иным.
Проблема
При запуске приложения в самом Qt Creator (при нажатии на зеленую стрелку, или же через меню, или же иным способом) мы видим наше приложение:
Когда мы создавали приложение, то мы видели следующее окно:
Указанные тут папки и есть папки, куда сохраняется наше приложение.
Если мы перейдем в папку C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Debug (у вас папка может по-другому называться), то увидим следующее:
Зайдем в папку debug и найдем там наше приложение:
Если мы его запустим, то получим ошибку:
Первый способ — Официальная утилита windeployqt
Update 2018. Сейчас библиотека стала работать гораздо лучше. Поэтому ниже будет более подробная инструкция по использованию windeployqt .
Итак, в командной строке перейдите в папку bin того компилятора, под которым вы компилируете приложение в режиме Release . В этой папке должен быть файл windeployqt.exe . Например, у меня в данный момент для MinGW это папка D:\Qt\5.12.0\mingw73_64\bin , а для Visual Studio D:\Qt\5.12.0\msvc2017_64\bin .
Перейти можно с помощью команды cd :
Скомпилируйте в режиме Release ваше приложение. Для примера я создал простое Qt Widgets Application и скомпилировал под MinGW компилятором:
Найдите папку, в которой находится скомпилированный EXE файл. Например, в моем случае это папка D:\Harrix\Projects\Qt\untitled\_build\release :
Теперь можно в командной строке вызвать windeployqt с указанием папки с EXE файлом:
Теперь в папке добавились нужные файлы:
Но если попробовать запустить EXE файл, то вылетит ошибка, так как три DLL не скопировались: libwinpthread-1.dll , libstdc++-6.dll , libgcc_s_seh-1.dll . Их нужно вручную скопировать из той же папки, где находится windeployqt.exe :
После этого приложение должно запуститься. Настоятельно рекомендую проверить работоспособность приложения на чистом компьютере без установленной Qt.
Для компилятора Visual Studio алгоритм тот же, но лучше еще добавить параметр --compiler-runtime , например:
Если у вас приложение с использованием QML, то нужен параметр --qmldir с указанием папки, где хранятся .qml файлы:
Стоит обратить внимание на то, что windeployqt может копировать лишние файлы. От них можно избавиться, потихоньку удаляя файлы из папки на чистом компьютере.
Второй способ — Ручной
Начало решения проблемы
Мы же хотим, чтобы приложение запускалось на других компах? Поэтому надо в окончательном виде выдавать приложение, а не в режиме отладки.
Внизу, над зеленым треугольником выбираем режим Release :
Запускаем приложение, нажатием на зеленый треугольник:
Как видим, через некоторое время запустилось привычное нам приложение. Но теперь *.exe файл появился в папке, которое мы указывали для Release :
Заходим в эту папку (у меня это C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release ):
Если в прошлый раз мы заходили в папку debug , то сейчас заходим в папку release , и запускаем приложение:
Кстати, для последующего распространения программы нам из папки нужен (из текущих файлов) только *.exe файл, поэтому файлы main.o , mainwindow.o , moc_mainwindow.cpp , moc_mainwindow.o можно удалить без ущерба (это служебные файлы, которые будут появляться при каждой компиляции).
Нахождение DLL и других файлов
Итак, приложение ругается на отсутствие Qt5Core.dll (у вас может быть цифра другая, если в момент чтения статьи вышла иная версия Qt). Где этот файл искать?
Найдите папку, в которую устанавливался Qt. У меня это папка C:\QtQt5.2.0
В ней найдите папку с номером версии вашего Qt. У меня это первая папка с названием 5.2.0-rc1 . У вас скорее всего будет немного по-другому называться (у меня сейчас beta версия стоит):
В ней будет папка компилятора MinGW:
Переходим в неё:
В ней находим главную папку bin :
И в этой папке находим нужные нам dll . Находим тут Qt5Core.dll (не Qt5Cored.dll . ) и копируем в папку C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release\release (где наш *.exe файл находится). И запустим приложение:
И вот так копируем все нужные DLL, которые просит приложение. У меня потребовались следующие DLL: icudt51.dll , icuin51.dll , icuuc51.dll , libgcc_s_dw2-1.dll , libstdc++-6.dll , libwinpthread-1.dll , Qt5Core.dll , Qt5Gui.dll , Qt5Widgets.dll . И вот приложение запустилось:
Ура! Но рано радоваться. Если мы запустим на компе, где нет Qt, то приложение выдаст ошибку, так как не может найти библиотеки. Надо скопировать еще несколько файлов. Помните основную папку Qt? Переходим в неё:
Там есть папка Tools :
В ней есть папка QtCreator :
В ней папка bin :
Скопируйте файл qt.conf в папку с *.exe файлом:
Теперь перейдите в папку с компилятором:
А там перейдем в папку plugins , а оттуда в platforms :
Скопируйте файлы qminimal.dll и qwindows.dll . Но вставим не просто в папку с *.exe файлом, там создадим папку plugins , а там папку platforms , и уже в нее вставим файлы. То есть для всех DLL, которые нам могут пригодиться, некоторые находятся не прямо в папке bin , то для этих DLL в папке с EXE файлом мы должны создать такие же папки, в которых они находились, относительно папки компилятора. В нашем случае в папке с компилятором файлы находись под именами: [путь к папке с компилятором] \plugins \platforms \qminimal.dll , [путь к папке с компилятором] \plugins \platforms \qwindows.dll . Поэтому копируйте так: [путь к папке с *.exe файлом] \plugins \platforms \qminimal.dll , [путь к папке с *.exe файлом] \plugins \platforms \qwindows.dll .
Вот теперь приложение запустится везде! То есть вы должны вместе с EXE файлом копировать все эти DLL и qt.conf . На скриншоте временные файлы я не удалил:
Здесь показан принцип, как находить нужные DLL. Если вы используете какие то другие компоненты, например, QWebVie w, то вам будут нужны еще другие DLL, которые вы находите аналогичным способом.
Помните, что если вы используется QtQuick то вам еще потребуется папка qml .
Внимание! Иногда описанный выше способ не помогает. Вроде скопировали все DLL, что вам могли пригодиться, приложение даже запускается, но вы видите лишь белый экран, например, или приложение вообще не появляется, но в диспетчере задач появляется.
В таком случае копируйте все DLL из папки bin (а из остальных мест в виде папок, где они хранятся) и начинайте скрупулезно удалять поштучно DLL до тех пор, пока не сузите число файлов до минимально работающего числа. Помните, что все DLL есть в двух вариантах: для release и ли debug режима. Для debug режима в имени DLL появляется буква d . Эти файлы вам не нужны!
Статья обновлена 2018
В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.
В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.
Репутация: нет
Всего: нет
Доброго времени суток!
Qt Creator (Community) 3.6.0
Qt 5.5.1 (MSVC 2013, 32-bit)
Обнаружилась проблема запуска собранной программы на версиях Windows 8 и 10. Сама сборка происходит на Windows 7(были мысли что сборка на windows поможет). Программа отлично запускается и работает на Windows 7, но стоит перенести на более свежие версии, перестает запускаться.
При запуске она намертво виснет и, сколько не жди, не запустится.
Если кто-то сталкивался с этим, подскажите, пожалуйста, как решить эту проблему?
Репутация: нет
Всего: нет
Кажется, я понял в чем может быть проблема. Попробую использовать mingw-w64, в нем есть поддержка Windows 8.1, буду надеяться что различия с Windows 10 минимальны.
Репутация: нет
Всего: 2
Репутация: нет
Всего: нет
Цитата |
у меня как то была фигня, что координаты окна находились за границами экрана. ПОтом выставил их в 0 и все заработало ;-) |
Дело в том, что у меня форма не появляется вообще на экране. И, полагаю, в этом случае вообще нигде не происходил запуск приложения.
Репутация: нет
Всего: нет
Все таки, я что-то не понимаю. Сперва, проверил, выставил координаты окна (mingw). Эффекта никакого на Windows 8 - 10 не произошло.
Потом, поставил компилятор msvc2013. Собрал проект, исходный файл прибавил
100 kb, но опять ничего не поменялось.
Репутация: 1
Всего: 459
гениальность идеи состоит в том, что ее невозможно придумать
Репутация: нет
Всего: нет
Репутация: нет
Всего: нет
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.
[ Время генерации скрипта: 0.1368 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Да, пользовался поиском:
Однако в моем случае проблема все еще сохраняется. Я использую Qt 5.1.1 с Visual Studio 2012 и разработал свое приложение для Windows 7 с Qt Creator 2.8.1. Приложение скомпилировано в режиме «Release» и может быть выполнено, если оно запущено напрямую с Qt Creator.
Это приложение не удалось запустить, потому что оно не могло найти или загрузить "windows" подключаемого модуля платформы Qt. Доступные плагины платформы: минимальные, закадровые, окна.
Структура папки выглядит следующим образом:
Платформы - это папка, напрямую скопированная из Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platform , включая, например, qwindows.dll. Не имеет значения, переименовал ли я его в «платформу», как это сделали некоторые другие пользователи. Qt все еще не находит "окна плагинов платформы", в чем моя ошибка?
Отсутствует libEGL.dll ! Несмотря на то, что об этом не сообщалось при попытке запустить приложение (сообщалось обо всех других * .dll, таких как Qt5Gui.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), включив в него следующую строку:
datas = [('C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Library \ plugins \ platform * .dll', 'platform'),]
Это решение основано на ответах Джима Г. и CrippledTable.
Мое приложение построено как библиотека (dll) и вызывается приложением, отличным от Qt. Я использовал windeployqt.exe для установки библиотек Qt, платформ, плагинов и т. Д. В каталоге установки, но он все равно не смог найти платформу. После некоторых экспериментов я понял, что рабочий каталог приложения был установлен в другую папку. Итак, я взял каталог, в котором "жила" dll, используя GetModuleHandleExA , и добавил этот каталог в путь к библиотеке Qt во время выполнения, используя
Это сработало для меня.
Нашел другое решение. Создайте qt.conf в папке приложения как таковой:
А затем скопируйте папку плагинов в папку приложения, и у меня это сработает.
Создать каталог platforms и скопировать в него qwindows.dll , platforms и app.exe находятся в одном каталоге
cd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll
Структура папки + app.exe + платформы \ qwindows.dll
У моего коллеги на компьютере установлен Qt (5.6.0) по адресу: C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ плагины
У меня Qt (5.6.2) установлен в том же месте.
Чтобы обойти это, я добавил в приложение следующую строку кода, которая, кажется, вынуждает его искать подпапку «платформы» рядом с исполняемым файлом, прежде чем искать путь в Qt5Core.dll.
Я добавил эту строку к основному методу перед вызовом QApplication следующим образом:
Установка переменной среды QT_QPA_PLATFORM_PLUGIN_PATH на% QTDIR% \ plugins \ platform \ сработала для меня.
Также упоминалось здесь и здесь.
В выпуске, вероятно, отсутствует библиотека / плагин, или библиотека находится в неправильном каталоге или из неправильного каталога.
Предполагаемый ответ Qt: используйте windeployqt. см. последний абзац для объяснения
Создайте папку с именем «platform» в том же каталоге, что и файл application.exe. Скопируйте и вставьте qwindows.dll, который находится в каталоге / bin того компилятора, который вы использовали для выпуска своего приложения, в папку «platform». Как по волшебству это работает. Если .dll нет, проверьте plugins / platform / (где plugins / находятся в том же каталоге, что и bin /) 30
Я скопировал 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, все работало нормально.
СОЗДАТЬ:
Windows 10 (64-разрядная версия) Minicoda (с использованием python 3.9.4) (pkgs взяты из канала conda-forge) pyqt 5.12.3
Мой сценарий:
Я создавал приложение с графическим интерфейсом для некоторых встроенных работ. У меня было две машины, которые использовались для разработки (та же ОС и архитектура), на одной было нулевое подключение к Интернету. После упаковки моей среды и установки на автономном компьютере я столкнулся с ошибкой, которую вы получили.
Решение:
Найдите файл qt.conf в среде conda. для меня: C: \ Users \ "name" \ miniconda3 \ envs \ "env_name" \ qt.conf
Убедитесь, что пути правильные. Мне нужно было обновить «имя», так как оно осталось от старой машины.
Надеюсь, это кому-то поможет.
Установка переменной env QT_PLUGIN_PATH в каталог <. >/plugins также сработала.
У меня была такая же проблема с запуском приложения QT5 в Windows 10 (VS2019). Моя ошибка была
.. \ Debug \ Qt5Cored.dll
Модуль: 5.14.1
Файл: kernel \ qguiapplication.cpp
Строка: 1249
Это приложение не удалось запустить, потому что не удалось инициализировать подключаемый модуль платформы Qt.
Повторная установка приложения может решить эту проблему.
Решение
Поскольку я использовал QT msvc2017, я скопировал папки плагинов из папки «C: \ Qt \ Qt5.14.1 \ 5.14.1 \ msvc2017 \ plugins» в двоичную папку
Затем проверьте окно вывода Visual Studio и определите библиотеки DLL, загруженные из папки плагина, и удалите ненужные библиотеки DLL.
Допустим, вы хотели иметь портативные 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»). Следующие 2 строки сообщают Qt, где находятся его "исполняемые" файлы. Это будет как минимум файл "qwindows.dll" для программ Windows-Qt плюс любое количество * .dll. Если я правильно помню, в Dll-библиотеке (по крайней мере, когда я ее скачал) была небольшая «ошибка», так как она содержит каталог «платформ» с qwindows.dll в нем. Поэтому, когда вы открываете каталог lib, вам нужно создать папку «plugins» рядом с «platform», а затем переместить в «plugins». Если приложение Qt, любое приложение Qt не находит «qwindows.dll», оно не может найти «окна». И он ожидает, что он находится в каталоге с именем «platform» в каталоге «plugins», который ему должна сообщить ОС, в которой он работает . и если «QT_PLUGIN_PATH» не совсем указывает на все вспомогательные DLL, которые вы необходимо, некоторые Qt-программы все равно будут работать без проблем. А некоторые жалуются на отсутствие * .dll, о которых вы никогда не слышали .
Приложение qtbase / bin / windeployqt.exe автоматически развертывает ваше приложение. Если вы запустите приглашение с правильно установленными переменными envirenmentvariables, оно будет развернуто в текущем каталоге. Вы найдете пример сценария:
Если у вас установлена Anaconda, я рекомендую вам удалить ее и попробовать установить пакет python из исходного кода, я исправил эту проблему таким образом
Используйте этот командный файл: RunWithQt.bat
- чтобы использовать его, перетащите файл gui.exe и поместите его в RunWithQt.bat в проводнике,
- или вызовите RunWithQt gui.exe из командной строки
Для платформы MinGW и если вы компилируете цель отладки вручную созданным специально написанным CMakeLists.txt, вам также необходимо добавить qwindows.dll в каталог платформы. Исполняемый файл windeployqt работает хорошо, но кажется, что по какой-то странной причине сборка CMake также нуждается в выпускном варианте. Таким образом, было бы лучше иметь и qwindows.dll, и qwindowsd.dll в каталоге вашей платформы. Я не заметил такого же странного результата при импорте проекта CMake в QtCreator и последующем запуске процедуры сборки. Компиляция в командной строке проекта CMake, кажется, вызывает зависимость qwindows.dll, если правильный для цели отладки установлен на месте (qwindowsd.dll)
windeployqt не работает с MinGW QTBUG-80763 Будет исправлено в 5.14.1
Так что имейте в виду. Использование windeployqt с MinGW приведет к той же ошибке, что указана здесь.
У меня была такая же проблема, и я решил ее, применив несколько вещей. Первый, если это программа, которую вы сделали на 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-битные файлы в качестве резервной копии.
Читайте также: