Windows 8 d3dx11.h不在Windows 8.0工具包中

Windows 8 d3dx11.h不在Windows 8.0工具包中,windows-8,directx,visual-studio-2012,winapi,Windows 8,Directx,Visual Studio 2012,Winapi,我的开发平台是Windows7x64。我已经安装了VS2012,我想编译一个包含一些Dx11代码的项目 具体而言,它包括以下文件: #include <d3dx11.h> #include <d3dx10.h> 我已经在我的开发机器上安装了VS2011,但是我想尝试VS2012中的单元测试工具,用于原生C++。 由于安装了VS2011并使用DirectShow代码,我安装了Windows 7.1 SDK VS2012选择了这一点,并引用了7.1 SDK,但在VS2012

我的开发平台是Windows7x64。我已经安装了VS2012,我想编译一个包含一些Dx11代码的项目

具体而言,它包括以下文件:

#include <d3dx11.h>
#include <d3dx10.h>
我已经在我的开发机器上安装了VS2011,但是我想尝试VS2012中的单元测试工具,用于原生C++。 由于安装了VS2011并使用DirectShow代码,我安装了Windows 7.1 SDK

VS2012选择了这一点,并引用了7.1 SDK,但在VS2012下使用7.1 SDK编译我的项目时出现了错误:

"warning C4005: '__useHeader' : macro redefinition"
我在谷歌上搜索了一下,找到了。为了解决这个问题,解决方案建议使用Windows8工具包而不是7.1SDK

Windows8工具包包括像d3d11.h这样的头文件,但不包括d3dx11.h


如何将d3dx11(来自DXSDK)与windows 8工具包一起包含,但不出现多个“宏重新定义”错误?

我在中发现了以下相当恼人的引用

D3DX不被认为是在Windows中使用Direct3D的标准API 8,因此不包含在相应的Windows SDK中。 研究使用Direct3D API的替代解决方案

用于遗留项目,如Windows 7(及更早版本)DirectX SDK 在示例中,以下步骤对于使用 使用DirectX SDK的D3DX:


修改项目的VC++目录,如下所示,以使用正确的 SDK头和库的顺序

一,。打开项目的属性并选择VC++目录 第页。
二,。选择所有配置和所有平台。
三、设置这些目录如下:

可执行目录:(在右侧下拉列表中)

包含目录:$(IncludePath)$(DXSDK_DIR)包括

包括库目录:$(LibraryPath)$(DXSDK_DIR)Lib\x86

iv.单击应用。
v选择x64平台。 六、设置库目录如下:

库目录:$(LibraryPath)$(DXSDK_DIR)Lib\x64

在您的文档中包含“d3dx9.h”、“d3dx10.h”或“d3dx11.h”的位置 项目中,确保明确包含“d3d9.h”、“d3d10.h”和 首先是“dxgi.h”或“d3d11.h”和“dxgi.h”,以确保您正在拾取 更新的版本

如果需要,您可以禁用警告C4005;然而,这一警告 表示您正在使用这些标题的旧版本

删除项目中对DXGIType.h的所有引用。此标题 Windows SDK和DirectX SDK版本中不存在 与新winerror.h.的冲突

所有D3DX DLL都由安装在开发计算机上 DirectX SDK安装。确保必要的D3DX依赖项 与任何示例或应用程序(如果是)一起重新分发 移动到另一台机器

请注意,目前使用的D3DX11的替代技术 包括DirectXTex和DirectXTK。D3DXMath被DirectXMath替换


FFS微软,请不要像这样更改API的中间版本

同意,特别是当目前DirectX11上的所有书籍都广泛使用d3dx11.h时,疯狂!看见
"warning C4005: '__useHeader' : macro redefinition"