C++ D3D11CreateDevice 0x887a002d错误

C++ D3D11CreateDevice 0x887a002d错误,c++,directx,direct3d,C++,Directx,Direct3d,首先,我从Frank Luna的书中学习DirectX 11,我来到了需要创建设备的部分,但它给出了错误:“0x887a002d:应用程序请求的操作依赖于缺少或不匹配的SDK组件。”我不断搜索,尝试了不同的解决方案,但没有成功 我尝试过的解决方案: 1) 我使用的是visual studio 2015附带的DirectX库,所以我安装了它。(正确) 2) 我尝试将其更改为D3D11CreateDeviceAndSwapChain,但也出现了相同的错误 我已经将DirectX SDK(2010年6

首先,我从Frank Luna的书中学习DirectX 11,我来到了需要创建设备的部分,但它给出了错误:“0x887a002d:应用程序请求的操作依赖于缺少或不匹配的SDK组件。”我不断搜索,尝试了不同的解决方案,但没有成功

我尝试过的解决方案: 1) 我使用的是visual studio 2015附带的DirectX库,所以我安装了它。(正确) 2) 我尝试将其更改为D3D11CreateDeviceAndSwapChain,但也出现了相同的错误

我已经将DirectX SDK(2010年6月)连接到该项目(是的,我想使用DirectX遗留SDK)

我的代码:

HRESULT hr;
UINT CreateDeviceFlags = 0;
D3D_FEATURE_LEVEL featureLevel;
UINT m4xMsaaQuility;


    #if defined(DEBUG) || defined(_DEBUG)
      CreateDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
    #endif

hr = D3D11CreateDevice(
    0,
    D3D_DRIVER_TYPE_HARDWARE,
    0,
    CreateDeviceFlags,
    0, 0,
    D3D11_SDK_VERSION,
    &m_pDevice,
    &featureLevel,
    &m_pDeviceContext);

if (FAILED(hr))
{
    return -1;
}
包括:

#include <iostream>
#include <Windows.h>

#include <d3d11.h>
#include <d3dcompiler.h>
#include <DirectXMath.h>
#include <DirectXColors.h>

// Link Library Dependencies
#pragma  comment(lib, "d3d11.lib")
#pragma  comment(lib, "dxgi.lib")
#pragma  comment(lib, "d3dcompiler.lib")
#pragma  comment(lib, "winmm.lib")
#包括
#包括
#包括
#包括
#包括
#包括
//链接库依赖项
#pragma注释(lib,“d3d11.lib”)
#pragma注释(lib,“dxgi.lib”)
#pragma注释(lib,“d3dcompiler.lib”)
#pragma注释(lib,“winmm.lib”)
您没有提到正在使用的操作系统

该错误表示您的系统没有支持
D3D11\u CREATE\u DEVICE\u DEBUG
所需的DirectX SDK层包。您可以通过构建不使用此标志的版本配置来验证,并检查它是否可以创建Direct3D 11设备

使用DirectX 11.0时,旧版DirectX SDK(即使是最后一个,2010年6月)仅安装适用于Windows 7或更早版本的DirectX Developer调试运行时。它不支持带有KB 2670838(又称DirectX 11.1)、Windows 8、Windows 8.1或Windows 10的Windows 7 SP1

  • 如果您使用的是带有KB 2670838的Windows 7 SP1,那么您应该通过安装Windows 8.1 SDK(VS 2015附带)获得适当的调试SDK层。看

  • 如果您使用的是Windows 8、Windows 8.1或Windows 8.1 Update,则应通过安装Windows 8.1 SDK(VS 2015附带)获得适当的调试SDK层。请注意,Windows 8不再受支持,因此您应该确保转到Windows 8.1 Update或Windows 10

  • 如果您使用的是Windows 10,则需要启用图形工具Windows功能,该功能提供与当前版本的Windows 10相匹配的调试SDK层。请记住,这是特定于操作系统版本的,因此升级到较新版本或内部版本可能需要重新安装Windows功能。在企业设置中,您的IT管理员必须批准您使用此Windows可选功能才能安装它。看

看到和

Frank Luna的书很好,但是是在DirectX SDK被弃用之前写的。阅读一些重要的注释。请务必阅读并考虑使用来自.

的效果11的最新版本。 由于您是DirectX 11的新手,我强烈建议您看看DirectX 11的DirectX工具包。在完成露娜的全部著作之前,你可以做这件事,这样你就可以在“DirectX 11”的“现代”方式中找到一个基础。这将使您更容易从仍然非常相关的部分中辨别出Luna书中不推荐的内容


“我尝试了不同的解决方案”,然后列出您已经尝试过的解决方案。1)我正在使用visual studio 2015附带的directx库,因此我安装了它。(正确)2)我尝试将其更改为D3D11CreateDeviceAbdSwapChain,但出现了相同的错误编辑您的问题以包含该错误。