vs2013 头文件包含 #include "D3Dx9shader.h" 出错

1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx9math.h(392): error C2091: 函数返回函数
1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx9math.h(392): error C2802: 静态成员“operator new”没有形参
1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx9math.h(393): error C2059: 语法错误:“字符串”
1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx9math.h(393): error C2090: 函数返回数组
1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx9math.inl(990): error C2761: “void *(__cdecl *_D3DXMATRIXA16::operator new(void))(size_t)”: 不允许成员函数重新声明
1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx9math.inl(990): fatal error C1903: 无法从以前的错误中恢复;正在停止编译

出错代码

  // new operators
    void* operator new   ( size_t );
    void* operator new[] ( size_t );
D3DXINLINE void* 
_D3DXMATRIXA16::operator new( size_t  )
{
    if (s > (SIZE_MAX-16))
    return NULL;
    LPBYTE p = ::new BYTE[s + 16];
    if (p)
    {
        BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
        p += offset;
        p[-1] = offset;
    }
    return p;
}

D3DXINLINE void* 
_D3DXMATRIXA16::operator new[]( size_t  )
{
    if (s > (SIZE_MAX-16))
    return NULL;
    LPBYTE p = ::new BYTE[s + 16];
    if (p)
    {
        BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
        p += offset;
        p[-1] = offset;
    }
    return p;
}


你的 D3Dx9shader.h 头文件里的代码有异常。
不允许成员函数重新声明
看看是不是重复导入了。