Модуль компилятора D3D Qt 5.12 не найден - PullRequest
0 голосов
/ 11 декабря 2018

Я установил Qt 5.12. Когда я хочу скомпилировать свой проект, выведите следующие ошибки:

Ошибки:

QOpenGLShaderProgram::uniformLocation(qt_Matrix): shader program is not linked
ensureInitialized(141): D3D compiler module not found.
QOpenGLShader::link: D3D compiler module not found.
shader compilation failed: 
"D3D compiler module not found.\n"

Ответы [ 3 ]

0 голосов
/ 13 января 2019

У меня такая же проблема на моем старом ноутбуке Del.Размещение d3dcompiler_43.dll в папке exe решает проблему.Я обнаружил, что с помощью одной из следующих команд также работает, что я предполагаю, что избегает ANGLE все вместе.

// Чтобы использовать чистый OpenGL: QCoreApplication :: setAttribute (Qt :: AA_UseDesktopOpenGL);

// Или использовать программный эмулированный OpenGL: QCoreApplication :: setAttribute (Qt :: AA_UseSoftwareOpenGL);

Я просто включил первый чистый параметр OpenGL в скобку "int main (int argc, char * argv [])" в main.cpp

0 голосов
/ 21 февраля 2019

Согласно bugreports.qt, эта проблема теперь исправлена ​​в версии QT 5.12.1.

https://bugreports.qt.io/browse/QTBUG-71510

0 голосов
/ 12 декабря 2018

Добро пожаловать в SO!

Прежде всего, давайте выясним, что означает ошибка.

Qt использует ANGLE в Windows, который является слоем, позволяющим запускатьПрограммное обеспечение OpenGL в системах, где OpenGL недоступен, путем трансплантации вызовов OpenGL в вызовы DirectX.Qt решает, использовать ли чистый OpenGL или ANGLE в зависимости от конфигурации машины (модель видеокарты, версия видеодрайвера и т. Д.).Более подробную информацию об этом можно получить по адресу https://wiki.qt.io/Qt_5_on_Windows_ANGLE_and_OpenGL.

Даже если вы сами не пишете какой-либо код OpenGL, среда выполнения qml, безусловно, имеет множество вызовов OpenGL, которые снова могут проходить через ANGLE.

Вот почему сбивающее с толку сообщение об ошибке (ищет компилятор шейдера D3D при работе с кодом OpenGL!).

Теперь проект Qt bugtracker сообщает о той же проблеме, что и у вас https://bugreports.qt.io/browse/QTBUG-71510, хотя на момент написания решения не было предоставлено.Я бы посоветовал взглянуть на багтрекер время от времени, чтобы следить за ходом решения этой проблемы.

Несколько обходных путей, которые вы можете попробовать:

  1. Скопируйте файл d3dcompiler_xx.dll втот же каталог, в котором находится ваш exe;
  2. Заставьте Qt использовать OpenGL вместо DirectX, установив переменную окружения QT_OPENGL в desktop (подробнее об этом наhttp://doc.qt.io/qt-5/windows-requirements.html)
...