perbright 2024-07-31 10:33 采纳率: 0%
浏览 72

qt6程序在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何解决?

qt6.6+vs2019开发的qt程序,在direct11电脑上运行出现无法定位程序输入点D3D12SerializeVersionedRootSignature于动态库Qt6Gui.dll上,如何qt6不使用direct12相关api呢!

  • 写回答

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 的选项。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月31日