1

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

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

#include <d3dx9.h>

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

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

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

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

x64 因为我运行的是 64 位系统。

如果有人能花时间发表建议,我将不胜感激。

问候。

4

1 回答 1

8

Visual Studio 2015 包含比旧版 DirectX SDK 中的标头更新的 Windows 8.1 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 本机:

<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>

请参阅MSDNDirectX SDK(2015 版)在哪里?, Zombie DirectX SDKNot So Direct 设置

尽管如此,您可能无论如何都不应该使用旧版 Direct3D 9。将 DirectX 11 与 D3DX 的现代替代品之一结合使用是一种更好、更简洁的选择,并且不需要旧版 DirectX SDK。请参阅没有 D3DX 的生活

如果您的目标是在带有 Direct3D 9 的 Windows XP SP3 上运行程序,您将使用v140_xp使用 Windows 7.1A SDK而不是Windows 8.1 SDK 的平台工具集。因此,您使用老式的包含顺序。有关详细信息,请参阅此帖子

于 2017-01-14T00:42:53.560 回答