c ++ - 尝试包含d3d11.h时DXGI.h出错

时间:2017-11-15 18:51:34

标签: c++ directx codeblocks directx-11

当我尝试使用Code :: Block和Visual Studio编译代码时,我在DXGI.h中收到错误

错误:' __ in'尚未宣布|

错误:预期','或者' ...'之前'&'令牌| 等等

为什么要继续,我该如何解决?

#include <windows.h>
#include <windowsx.h>
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dx10.h>

1 个答案:

答案 0 :(得分:1)

将旧版DirectX SDK标头与Windows 8.0 SDK,Windows 8.1 SDK或Windows 10 SDK混合使用时,可能会出现许多问题。问题是因为旧版DirectX SDK有一些与新SDK冲突的旧标头。

您可能需要两个修复程序:

首先,请确保在搜索路径的 end 处添加DirectX SDK include和lib路径,而不是从头开始,以便首先列出较新的路径。

对于x86 / Win32配置:

$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86
$(IncludePath);$(DXSDK_DIR)Include
$(LibraryPath);$(DXSDK_DIR)Lib\x86

对于x64原生配置:

$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86
$(IncludePath);$(DXSDK_DIR)Include
$(LibraryPath);$(DXSDK_DIR)Lib\x64

其次,明确包含依赖标题,这样你就不会得到旧标题:

#include <windows.h>
#include <windowsx.h>
#include <d3d11.h>
#include <dxgi.h>    // <-- make sure you pick up the Windows SDK version
#include <d3dx11.h>  //     and not from the DXSDK

如果你让d3dx11.h拉入dxgi.h,那么你最终会得到错误的结果!

请参阅MSDNWhere is the DirectX SDK (2015 Edition)?The Zombie DirectX SDK

  

这里有关于您的代码的其他两件事。首先,没有理由使用DirectX 10或d3dx10.h。仅使用DirectX 11。

     

其次,D3DX本身已被弃用,包括D3DX9,D3DX10和D3DX11。有关Direct3D 11开源替换的信息,请参阅Living without D3DX