Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未找到Qt 5.12 D3D编译器模块_C++_Qt_Qml_Qt5 - Fatal编程技术网

C++ 未找到Qt 5.12 D3D编译器模块

C++ 未找到Qt 5.12 D3D编译器模块,c++,qt,qml,qt5,C++,Qt,Qml,Qt5,我已经安装了Qt5.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 faile

我已经安装了Qt5.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"
欢迎来到SO

首先,让我们澄清错误的含义

Qt在Windows上使用ANGLE,该层通过将OpenGL调用转换为DirectX调用,允许在没有OpenGL的系统上运行OpenGL软件。Qt根据机器的配置(视频卡型号、视频驱动程序版本等)决定使用纯OpenGL还是ANGLE。 有关这方面的更多详细信息,请访问

即使您自己没有编写任何OpenGL代码,qml运行时也肯定有很多OpenGL调用,这些调用可能会再次通过ANGLE

这就是为什么会出现令人困惑的错误消息(在处理OpenGL代码时查找D3D着色器编译器!)

现在,Qt项目bugtracker报告了与您相同的问题,尽管在撰写本文时还没有提供解决方案。我建议时不时地看看bugtracker,以监控这个问题的进展

您可以尝试以下几种变通方法:

  • 将d3dcompiler_xx.dll复制到exe所在的同一目录中
  • 通过将环境变量Qt\u OpenGL设置为desktop,强制Qt使用OpenGL而不是DirectX(有关详细信息,请参阅)

  • 我的旧笔记本电脑也有同样的问题。将d3dcompiler_43.dll放在exe文件夹中可以解决此问题。我发现使用以下命令之一也可以工作,我认为这可以避免角度

    //要使用纯OpenGL: QCoreApplication::setAttribute(Qt::AA_usedesktopongl)

    //或者使用模拟OpenGL的软件: QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL)


    根据bugreports.qt,我只在main.cpp的“int main(int argc,char*argv[])括号中包含了第一个纯OpenGL设置。这个问题现在已从版本qt 5.12.1修复