无法打开源文件d3dx9.h

时间:2017-01-13 09:44:12

标签: c++ sdk d3dx

在我开始之前,我知道这是一个非常常见的问题,我在发布之前确实搜索了答案。不幸的是,我没有运气。

在我的代码中,我包含了这样的文件:

#include <d3dx9.h>

现在出现错误:无法打开源文件d3dx9.h

在我的Include目录中,我确实输入了它所在的路径(如果我通过我的文件手动查找,我可以在那里看到它)。

路径为:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include

我还设置了图书馆目录:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64

x64,因为我正在运行64位系统。

如果有人可以花点时间发表建议,我会非常感激。

问候。

1 个答案:

答案 0 :(得分:4)

Visual Studio 2015包含的Windows 8.1 SDK比传统DirectX SDK中的标头更新。 Windows 8.1 SDK包含所有DirectX标头和库,但包含现已弃用的D3DX(D3DX9,D3DX10,D3DX11)实用程序库,这就是它“缺失”的原因。

D3DX9,D3DX10和D3DX11仅适用于旧版DirectX SDK。对于VS 2010,您应该使用的VC ++目录设置如下针对Win32(x86)设置:

<ExecutablePath>$(DXSDK_DIR)Utilities\bin\x86;$(ExecutablePath)</ExecutablePath>
<IncludePath>$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath>$(DXSDK_DIR)Lib\x86;$(LibraryPath)</LibraryPath>

这适用于x64 native:

<ExecutablePath>$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86;$(ExecutablePath)</ExecutablePath>
<IncludePath>$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(LibraryPath)</LibraryPath>

使用VS 2012或更高版本,您必须反向它们,因为Windows 8 SDK中的大多数标头都会替换旧的DirectX SDK:

<ExecutablePath>$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86</ExecutablePath>
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x86</LibraryPath>

<ExecutablePath>$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86</ExecutablePath>
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x64;</LibraryPath>

请参阅MSDNWhere is the DirectX SDK (2015 Edition)?The Zombie DirectX SDKNot So Direct Setup

  

尽管如此,你可能不应该使用传统的Direct3D 9。将DirectX 11与D3DX的现代替代品结合使用是一种更好,更清洁的选择,并且不需要传统的DirectX SDK。请参阅Living without D3DX

如果您专门针对使用Direct3D 9在Windows XP SP3上运行程序,您将使用使用Windows 7.1A SDK的v140_xp平台工具集, Windows 8.1 SDK。因此,你去旧学校包括订单。有关详细信息,请参阅this post