Error handling ID3D10Blob错误消息错误hlsl

Error handling ID3D10Blob错误消息错误hlsl,error-handling,directx,hlsl,Error Handling,Directx,Hlsl,我有一个奇怪的错误。我正在尝试编译HLSL文件,但调试工作不正常。 下面是我如何设置错误检查的: hresult = D3DCompileFromFile(vs_fn, 0, 0, "VShader", "vs_4_0", D3DCOMPILE_DEBUG, 0, &vertex_shader_blob, &error_message); if (FAILED(hresult)) { // If the shader failed to compi

我有一个奇怪的错误。我正在尝试编译HLSL文件,但调试工作不正常。 下面是我如何设置错误检查的:

hresult = D3DCompileFromFile(vs_fn, 0, 0, "VShader", "vs_4_0", D3DCOMPILE_DEBUG, 0, &vertex_shader_blob, &error_message);
    if (FAILED(hresult))
    {
        // If the shader failed to compile it should have writen something to the error message.
        if (error_message)
        {
            auto error = (char*)error_message->GetBufferPointer();
            return false;
        }

    }
但是,我的着色器代码确实有效。它也显示了我想要的方式,但是当我在代码中放置一个随机字符或更改任何内容以产生错误时,不会向错误变量输出任何内容。就在前几天,它起了作用


检查失败,它将步进if语句,但从未进入它,只是中断到整个代码块的末尾。我很困惑。

是的,我的错,当我上传该变量以显示它是一个实际的HRESULT时,我意外地更改了该变量,但“check”和“HRESULT”在代码中都是相同的变量。我更改了我原来的帖子。您是否尝试将错误消息输出到控制台或禁用编译器优化?如果变量没有在您直接返回后使用,编译器可能会优化节并删除赋值。我已经尝试了这两种方法。错误检查在我的另一台笔记本电脑上完全可以正常工作。可能是某个VisualStudio设置出错了,但我不知道从哪里开始运行release或debug?在发布版本中,分支将得到优化,因此您只需跨过它。