qt6.6+vs2019开发的qt程序,在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何qt6不使用direct12相关api呢!
![](https://profile-avatar.csdnimg.cn/91f0ad542c1e42e48fd21ff01a04bbce_perbright.jpg!4)
qt6程序在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何解决?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 来一杯龙舌兰 2024-07-31 10:43关注
Qt 6 默认使用 Direct3D 12 (如果可用) 作为其 RHI (渲染硬件接口) 后端。然而,你的问题是因为你的程序试图在一个只支持 Direct3D 11 的系统上运行,而这个系统不支持 Direct3D 12 API,导致程序无法找到 D3D12SerializeVersionedRootSignature 这个函数。
你可以通过设置环境变量来强制 Qt 6 使用 Direct3D 11。你可以在你的程序开始运行之前,设置 QT_RHI_BACKEND 环境变量为 "d3d11"。在 C++ 中,你可以这样做:
qputenv("QT_RHI_BACKEND", "d3d11");
你需要在创建 QApplication 或 QGuiApplication 对象之前设置这个环境变量。
另外,你也可以在运行你的程序时,通过命令行参数来设置这个环境变量:
QT_RHI_BACKEND=d3d11 ./your-program
请注意,这只是一个临时的解决方案。如果你打算在只支持 Direct3D 11 的系统上分发你的程序,你应该考虑在编译时禁用 Direct3D 12 的支持,或者提供一个降级到 Direct3D 11 的选项。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 设计一个线控耳机音响系统满足以下全部功能
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
- ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- ¥50 rk3588板端推理
- ¥250 opencv怎么去掉 数字0中间的斜杠。
- ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
- ¥250 paddleocr带斜线的0很容易识别成9
- ¥15 电子档案元素采集(tiff及PDF扫描图片)
- ¥15 flink-sql-connector-rabbitmq使用
- ¥15 zynq7015,PCIE读写延时偏大