【问题标题】:D3D11.h in VS2015VS2015 中的 D3D11.h
【发布时间】:2025-12-03 07:25:01
【问题描述】:

似乎无论我尝试什么,我都无法编译 Directx 11 应用程序。我试过了:

  • 在 2010 年 6 月安装 DirectX 并将 $(IncludePath);$(DXSDK_DIR)Include 和 $(LibraryPath);$(DXSDK_DIR)Lib\x86 添加到 VS2015 以获取包含目录和库目录,它会找到 d3d11.h,但会显示 d3d11。 lib 不存在。 (Source)
  • 2010 年 6 月尝试删除 DirectX 并依赖 Win10 的 ("C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um") d3d11.h ... VS2015 说它不在这里李>

我做错了什么?

谢谢!

【问题讨论】:

  • 安装VS2015的时候安装了SDK,你是说我没有SDK吗?
  • 实际这样做让我的VS2015无法找到d3d11.dll
  • 在 VS 2015 中,Win32 经典桌面应用程序将默认使用 Windows 8.1 SDK 构建。这意味着它可以默认找到#include <d3d11.h>#include <d3d11_1.h>。但是,它将无法找到 #include <d3dx11.h>,这是仅在旧版 DirectX SDK 中已弃用的 D3DX11 实用程序标头。您到底看到了什么错误?
  • 您应该安装 Direct3D Game VS Template 并实例化 Direct3D Win32 游戏以验证您的 VS 2015 设置是否正确。

标签: c++ visual-studio-2015 directx-11


【解决方案1】:

@MaverickATC 我今天遇到了这个确切的问题。 我无法构建示例 DirectX (Tutorial01) 之一,并且在“D3D11CreateDevice”上出现链接错误我试图通过 Project -> Linker 设置添加库“d3d11.lib”,但遇到了同样的问题。 添加:

#pragma comment(lib, "d3d11.lib")

在我的代码开头解决了问题并允许构建没有错误。

我觉得这很奇怪,因为在我看来,他们应该做与@Vic 指出的相同的事情,但在这种情况下,#pragma 对我有用。

【讨论】:

    【解决方案2】:

    如果您使用的是 Windows SDK,您还应该包含 dxgi 头文件和库,以及 d3dcompiler 头文件和库来编译着色器:

    #include <d3d11.h>
    #include <dxgi.h>
    #include <d3dcompiler.h>
    #pragma comment(lib, "d3d11.lib")
    #pragma comment(lib, "dxgi.lib")
    #pragma comment(lib, "d3dcompiler.lib")
    

    【讨论】:

      【解决方案3】:

      @MaverickATC 在某种程度上是正确的。 DirectX June 2010 或 Win8/Win10 都可以工作。如果你需要 d3d11.lib,你应该手动将它添加到投影属性中,你的 Sdk 中确实有 d3d11.lib(DirectX June 2010 或 Win8/Win10,你可以尝试搜索),你只需添加一个名称“d3d11.lib " 到投影属性 -> 链接 -> 附加依赖库。因为 vs2015 可以搜索你的环境路径来找到它。 dxgi.h 用于获取 DXGI API,是 d3d11 的底层,但不是必须的。所以不要d3dcompiler,它是用来编译d3d shader的。

      【讨论】: