当我尝试使用Code :: Block和Visual Studio编译代码时,我在DXGI.h中收到错误
错误:' __ in'尚未宣布|
错误:预期','或者' ...'之前'&'令牌| 等等
为什么要继续,我该如何解决?
#include <windows.h>
#include <windowsx.h>
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dx10.h>
答案 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
,那么你最终会得到错误的结果!
请参阅MSDN,Where 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。