Вопрос или проблема
Я создал простое приложение, которое могу собрать на Ubuntu и Mac с помощью “make”, но на Windows у меня возникают ошибки, когда я пытаюсь собрать приложение с помощью QT Creator.
Я сделал следующее:
- Откройте Qt Creator.
- Создайте новый проект: Создать проект -> Приложение -> Приложение Qt Widgets
- Скопируйте исходные файлы из gui/: mainwindow.h, mainwindow.cpp и main.cpp
- Соберите проект: Собрать -> Собрать проект “redatamguiwindows”
После установки Chocolatey с помощью choco install directx
и копирования DLL-файлов в Z:\redatamguiwindows\build\Desktop_Qt_6_7_2_MinGW_64_bit-Debug
я выполнил
$vcInstallDir = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC"
[System.Environment]::SetEnvironmentVariable("VCINSTALLDIR", $vcInstallDir, [System.EnvironmentVariableTarget]::Process)
cd Z:\redatamguiwindows\build\Desktop_Qt_6_7_2_MinGW_64_bit-Debug
& "C:\Qt\6.7.2\mingw_64\bin\windeployqt.exe" redatamguiwindows.exe
Появляется сообщение “Предупреждение: Не удалось найти ни одной версии dxcompiler.dll и dxil.dll.”
А затем, когда я открываю exe, появляется сообщение “exe по-прежнему выдает ошибку ‘точка входа процедуры…'”
У вас есть идеи, как это исправить?
Я использую Qt 6.7, скачанный с https://d13lb3tujbc8s0.cloudfront.net/onlineinstallers/qt-online-installer-windows-x64-4.8.0.exe, и я установил стандартный Qt Desktop.
Ответ или решение
Чтобы решить проблему с созданием исполняемого файла (exe), который не работает после использования windeployqt
, следуйте приведенным ниже шагам:
-
Проверка необходимых библиотек: Ошибка, которую вы получаете, связана с отсутствующими библиотеками
dxcompiler.dll
иdxil.dll
. Эти библиотеки относятся к DirectX и могут не быть установлены на вашем ПК. Вы можете установить DirectX, используя Chocolatey, как вы уже делали, но также убедитесь, что вы установили последнюю версию DirectX Runtime, которая включает все необходимые компоненты. -
Установка дополнительных компонентов: Если в процессе установки DirectX не были установлены необходимые DLL, можно попробовать установить отдельные пакеты. Вам может потребоваться скачать и установить DirectX End-User Runtime Web Installer с официального сайта Microsoft.
-
Работа с windeployqt:
- Перейдите в директорию вашего проекта, где находится исполняемый файл.
- Запустите
windeployqt
, но с флагом--release
(если это релизная версия), чтобы убедиться, что все необходимые зависимости для релизной версии корректно добавлены:& "C:\Qt\6.7.2\mingw_64\bin\windeployqt.exe" --release redatamguiwindows.exe
- Если вы используете режим отладки, убедитесь, что вы не смешиваете релизные и отладочные версии библиотек.
-
Проверка переменных окружения: Иногда недоступные библиотеки могут быть результатом неверных переменных окружения. Убедитесь, что у вас правильно установлены пути, особенно в
PATH
, чтобы все необходимые директории QT и MinGW были включены. -
Убедитесь в правильных версиях: Проверьте, что используете совместимые версии QT и MinGW. Иногда возникают конфликты между версиями библиотек. Убедитесь, что все компоненты последовательно используют одну и ту же версию.
-
Проверка зависимостей: Используйте утилиты, такие как Dependency Walker или другой анализатор зависимостей, чтобы проверить, какие точно зависимости отсутствуют для вашего exe-файла. Это может дать более четкое представление о том, что конкретно не хватает.
- Запуск в виде администратора: Попробуйте запустить вашу программу от имени администратора, чтобы исключить проблемы с разрешениями.
Если, следуя этим шагам, ваша проблема не решилась, попробуйте создать новый проект с максимально простым кодом и посмотреть, будет ли он работать. Если он работает, постепенно добавляйте в него части вашего кода, чтобы локализовать проблему.
Если вы по-прежнему сталкиваетесь с ошибками, пожалуйста, предоставьте более подробную информацию об ошибках, которые появляются в процессе, это поможет более точно диагностировать проблему.