You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022中DirectX 9开发dxerr9.h头文件引用报错求助

解决VS 2022中DirectX 9的dxerr9.h引用错误问题

先澄清一个误区

你安装的DirectX 2010年6月可再发行组件包仅包含运行时文件,不提供开发所需的dxerr9.h头文件和配套库文件。只有**DirectX SDK (June 2010)**开发包才包含这些资源,不过该SDK已不再由微软官方分发。下面提供两种可行的解决方式:


方法一:自定义dxerr9兼容实现(无需依赖旧SDK)

dxerr9.h的核心功能是获取DirectX 9的错误信息字符串,你可以直接在项目中添加以下兼容代码替代:

1. 创建dxerr9.h文件

#pragma once
#include <d3d9.h>

#ifdef __cplusplus
extern "C" {
#endif

const char* DXGetErrorString9(HRESULT hr);
const char* DXGetErrorDescription9(HRESULT hr);

#ifdef __cplusplus
}
#endif

2. 创建dxerr9.cpp文件

#include "dxerr9.h"
#include <string>
#include <windows.h>

const char* DXGetErrorString9(HRESULT hr)
{
    static std::string errorStr;
    char buffer[512] = {0};
    
    if (::FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        nullptr, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        buffer, sizeof(buffer), nullptr))
    {
        errorStr = buffer;
    }
    else
    {
        errorStr = "未知DirectX 9错误";
    }
    return errorStr.c_str();
}

const char* DXGetErrorDescription9(HRESULT hr)
{
    return DXGetErrorString9(hr);
}

将这两个文件添加到你的项目中,之后直接包含自定义的dxerr9.h即可使用原有功能。


方法二:配置VS 2022使用已获取的dxerr9.h

如果你从可信渠道(如旧SDK备份)拿到了dxerr9.h和dxerr9.lib,可以按以下方式配置项目:

优先方案:使用#pragma comment

在需要引用dxerr9.h的代码文件顶部添加以下代码(替换为实际的文件路径):

// 指定dxerr9.h所在目录
#pragma comment(include, "C:\\YourDXSDKPath\\Include")
#include <dxerr9.h>
// 链接dxerr9.lib库
#pragma comment(lib, "C:\\YourDXSDKPath\\Lib\\x86\\dxerr9.lib")

注意:路径需用双反斜杠\\或正斜杠/,根据项目平台选择x86/x64目录。

备选方案:修改项目属性

  1. 右键项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录:添加dxerr9.h所在的Include目录路径
  2. 右键项目 → 属性 → 配置属性 → 链接器 → 常规 → 附加库目录:添加dxerr9.lib所在的Lib\x86或Lib\x64目录路径
  3. 右键项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖项:添加dxerr9.lib

内容的提问来源于stack exchange,提问作者MattSA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:20:10