最近我拿起一本关于使用 Visual C++ 进行游戏编程的书。它使用 DirectX 库,并表示我只需将 #include 和 #pragma comment(lib, "d3dx9.lib") 写入代码中。但是该程序报告无法找到 d3dx.h。我该如何解决这个问题。
我尝试在项目属性-配置属性-链接器-输入-附加依赖项中添加文件,但仍然找不到该文件。如果这有什么改变的话,我正在使用 Visual Studio 2010。
我报告致命错误 C1083:无法打开包含文件:'d3dx.h':没有这样的文件或目录。
您应该阅读此博文和Microsoft Docs。
TL;DR: Direct3D 9 是旧版,D3DX 已弃用,DirectX SDK(2010 年 6 月)是生命周期结束版本。您仍然可以使用它,但此时您最好学习 DirectX 11。
否则,请从 Microsoft 下载 安装旧版 DirectX SDK(2010 年 6 月)。请注意,使用 VS 2010,您必须手动更新 VC++ 目录才能引用 DirectX SDK。
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 或更高版本,您必须颠倒这些路径顺序(即将 DXSDK_DIR 路径放在现有路径之后),如本页底部所述。
更新:
如今最好的解决方案是完全避免使用旧版 DirectX SDK。如果您需要 D3DX9/D3DX10/D3DX11,请使用 NuGet Package。请参阅此博文了解更多信息。