d3dx11.h不在Windows 8.0工具包中

时间:2012-09-17 12:54:29

标签: windows-8 directx visual-studio-2012 winapi

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

具体来说,它包括以下文件:

#include <d3dx11.h>
#include <d3dx10.h>

的链接
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")

我已经在我的开发机器上安装了VS2011,但我想在VS2012中尝试使用本机C ++的单元测试工具。

由于安装了VS2011并使用DirectShow代码,我安装了Windows 7.1 SDK。

VS2012选择了这个并引用了7.1 SDK,但在VS2012下使用7.1 SDK引用的项目编译给出了错误:

"warning C4005: '__useHeader' : macro redefinition"

我用Google搜索并找到了a query like mine on social.msdn.microsoft.com。并且解决方案建议使用Windows 8工具包而不是7.1 SDK进行链接以解决此问题。

Windows 8工具包包含d3d11.h之类的标题,但不包括d3dx11.h。

如何将d3dx11(来自Dx SDK)与Windows 8套件一起包含在内,但是没有出现多个“宏重新定义”错误?

1 个答案:

答案 0 :(得分:17)

我在this MSDN page中找到了以下相当恼人的引用。

  

D3DX不被视为在Windows中使用Direct3D的规范API   8因此不包含在相应的Windows SDK中。   研究使用Direct3D API的备用解决方案。

     

对于旧版项目,例如Windows 7(及更早版本)DirectX SDK   样本,以下步骤是构建应用程序所必需的   D3DX使用DirectX SDK:

     
     

按如下所示修改项目的VC ++目录以使用右侧   订购SDK标头和库。

     

我。打开项目的“属性”,然后选择“VC ++目录”   页面。
  II。选择所有配置和所有平台   III。设置这些目录如下:

     
    
      

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

             

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

             

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

    
  
     

IV。单击“应用”   v。选择x64平台。   六。按如下方式设置Library目录:

     
    
      

图书馆目录:$(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的中期版本!!!