qt6程序在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何解决?
根据这个办法,还是不行,https://ask.csdn.net/questions/8134163?%%E8%AF%B7%E5%A4%A7%E7%A5%9E%E5%B8%AE%E5%B8%AE%E6%88%91
qt6如何禁用direct12,改为使用direct11
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
CLLLLLLY 2025-01-03 20:00关注我长期活跃于技术社区,热衷于帮助他人解决各类技术难题。很高兴在 CSDN 上回答你的问题,让我们一起探讨,找到解决问题的最佳方案吧。
以下是解决在Qt6中禁用Direct12并使用Direct11的方法:方法一:通过环境变量设置
- 原理 在Windows系统中,可以通过设置环境变量来影响应用程序对DirectX版本的选择。通过设置
QT_OPENGL环境变量为desktop,可以强制Qt使用桌面OpenGL,而不是Direct3D 12等其他图形API。 - 操作步骤
- 在运行Qt6程序之前,在系统环境变量中添加名为
QT_OPENGL的变量,并将其值设置为desktop。 - 或者在程序启动脚本(如批处理文件等)中设置该环境变量,例如在批处理文件中可以这样写:
- 在运行Qt6程序之前,在系统环境变量中添加名为
set QT_OPENGL=desktop your_program.exe方法二:在代码中设置
- 原理 Qt提供了相关的API来设置图形相关的属性,在程序启动时通过
QCoreApplication::setAttribute函数可以设置AA_UseDesktopOpenGL属性,这将使得程序使用桌面OpenGL而不是Direct3D 12。 - 代码示例
#include <QCoreApplication> #include <QGuiApplication> #include <QWidget> int main(int argc, char *argv[]) { // 设置使用桌面OpenGL QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL); QGuiApplication app(argc, argv); QWidget window; window.show(); return app.exec(); }通过上述方法,应该可以解决Qt6程序在Direct11电脑上出现的关于找不到Direct3D 12相关函数入口点的问题,因为程序将不再尝试使用Direct3D 12,而是使用Direct3D 11或者OpenGL等其他兼容的图形API。
解决 无用评论 打赏 举报- 原理 在Windows系统中,可以通过设置环境变量来影响应用程序对DirectX版本的选择。通过设置