qt6.6+vs2019开发的qt程序,在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何qt6不使用direct12相关api呢!
qt6程序在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何解决?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注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 的选项。
解决评论 打赏 举报无用 1