无法打开包含文件“d3dx9.h”

22

编辑:当然,在我工作了一个小时并发布后,我立刻发现了愚蠢的错误...

在项目中尝试使用#include <d3dx9.h>时,我遇到了编译器错误。出现了“致命错误C1083:无法打开包括文件:“d3dx9.h”:没有那个文件或目录。”。

  • 我已经安装了DirectX SDK(我也尝试重新安装它,但没有用)。
  • 在项目属性中:
    • 对于所有配置,“VC++目录”设置为“$(DXSDK_DIR)Include;$(IncludePath)”和“$(DXSDK_DIR)Lib\x86;$(LibraryPath)”,环境变量%DXSDK_DIR%指向C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\,符合预期。
    • C/C++ > 常规设置中,$(DXSDK_DIR)include列在“附加包含目录”中
    • 链接器 > 输入 > 附加依赖项在Debug配置中包括d3dx9d.lib,在Release配置中包括d3dx9.lib
  • 我确实可以成功编译和运行DirectX示例浏览器中的教程项目。
  • Visual Studio的Intellisense/自动完成可以找到d3dx9.h,并建议文件中的类型和函数名称(不是通过我#include其他文件包含的), 因此看起来Intellisense可以找到它。

有什么建议或遗漏的内容吗?

谢谢


添加一个回答,然后选择它。删除将抵消Liviu帮助您所做的努力。 - user1228
好的。我不确定回答自己的问题是否不妥。我会这样做。 - chaosTechnician
5个回答

17

你忘记了一件事:

  1. 进入VC++目录->库目录
  2. 添加$(DXSDK_DIR)LIB\x86
  3. 应用。

完成。希望这可以帮到你。


2
我记得他说过他已经包含了库目录。 - Hazok

8
你应该确保你的所有路径都被引号(")包围。你应该使用"$(DXSDK_DIR)include",而不是$(DXSDK_DIR)include

3
我的理解是,VS2010不需要在路径周围加引号;但无论如何,添加引号也没有解决问题。 - chaosTechnician

5
我没有意识到解决方案中的另一个项目正在include一个文件,而这个文件正在include一个文件,该文件正在include d3dx9.h,并且我没有将这些路径添加到该项目中。

4

找到电脑上的文件,并将其所在的文件夹添加到项目的属性中。

假设您使用的是 Visual Studio: 属性/C/C++/常规/附加包含库


那对我来说确实解决了问题,但我觉得它真的很晦涩。为什么在“VC++目录->包含目录”中列出目录不足以满足要求呢?您能详细说明一下这种设置与您提到的设置之间的区别吗? - Henrik Heimbuerger

1
我尝试了所有这些建议,但都没有起作用。
事实证明,如果在运行Visual Studio的同时安装DirectX,则$(DXSDK_DIR)变量无法正常工作。对我来说解决方案是重新启动Visual Studio(当然还要添加上述解决方案中的路径)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接