d3dx11.h丢失?

23

我已经重新安装了 DirectX11 几次,甚至去了微软官网下载包含所有 DirectX cabinet 文件的 SDK 包。有人知道为什么我还是会收到这个错误吗?我知道它报错的原因,但更希望能找到解决方案。

1>c:\users\vaughn\documents\visual studio 2010\projects\myfirstapp\myfirstapp\main.cpp(5): 致命错误 C1083: 无法打开包括文件:'d3dx11.h':没有那个文件或目录


1
你是否将必要的文件夹添加到了你的包含目录中? - FailedDev
3个回答

33

以下是在VS 2010中需要进行的操作(在VS 2008及更早版本中会有所不同):

进入项目属性|配置属性|VC++目录。通过添加DirectX头文件路径来编辑名为“Include Directories”的行。对于2010年6月的SDK,路径可能如下:

32位Windows系统:C:\Program Files\Microsoft DirectX SDK (June 2010)\Include

64位Windows系统:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include

接下来,您很可能会遇到链接器错误(缺少.lib文件)。只需再次进入项目属性|配置属性|VC++目录,但这次要编辑Library Directories,并添加以下路径之一:

32位Windows系统:C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x86

64位Windows系统:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64

如果您安装了其他版本的SDK或将其安装到非默认目录,请相应地更改给定的路径。还请确保您已将d3d11.lib(以及可能的d3dx11.lib)添加到链接器|附加依赖项中。

通用规则是,每当您#include <>文件时,IDE都需要知道在哪里找到它们。在Visual Studio中,VC++目录是一种实现此目的的方法。但仅包含头文件(在大多数情况下)是不够的——您还需要告诉链接器在哪里查找由这些头文件所描述的预编译二进制文件。这就是通过将第二个路径添加到Library Directories中来实现的。


好的,我要去尝试一下。我认为我已经这样做了,因为作业指示告诉我这样做,但我会仔细检查一切。 - Nicholas Vaughn
谢谢你的帮助,结果我发现我缺少了VC++目录和Direct X11链接库。 - Nicholas Vaughn
4
使用环境变量%DXSDK_DIR%/Include呢? - qdii

1

你必须确保获取最新的DirectX SDK。它包含头文件。如果你只得到了压缩文件,那么你下载的SDK是错误的。


我下载了它,但它仍然告诉我找不到它?如果我注释掉请求访问文件的那一行,它就可以工作,但这也迫使我注释掉d3dx10.h文件,然后它就可以正常加载。 - Nicholas Vaughn
你能在系统中搜索 d3dx*.h 文件,看看正确的头文件安装在哪里吗? - Michael Price
即使重新安装了4次,它仍然没有弹出。 - Nicholas Vaughn

0
在我的情况下,对于DX12,我缺少了d3dx12.h。
请参见此MSDN页面。
如果页面移动,请注意相关行:
d3dx12.h可从Direct3D 12头文件中单独获取。您可以通过导航到Direct3D 12项目的任何源文件中,在GitHub/Microsoft/DirectX-Graphics-Samples下载d3dx12.h。”

5
DirectX SDK已过时,D3DX9、D3DX10和D3DX11也被弃用。查看无需D3DX以获取替代方案列表。D3DX12不是Windows SDK或DirectX SDK的一部分,它旨在只需复制到您的项目中,并可在GitHub上以MIT许可证提供。它还包含在各种DirectX 12 VS模板中,包括这些 - Chuck Walbourn
请注意,blob链接现在在这里 - Chuck Walbourn

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