Syntax 语法错误:标识符';文件dxgi1_2.h中的DXGI_RGBA

Syntax 语法错误:标识符';文件dxgi1_2.h中的DXGI_RGBA,syntax,directx,toolkit,Syntax,Directx,Toolkit,正在尝试将Directx工具包集成到我的游戏中。我遵循以下步骤: 一切都很顺利。尝试包含其中一个标题(SpriteFont.h)时,我会出现以下错误: 我已经将项目重构为8.1以匹配我的游戏,并重新构建了导入的项目,效果非常好。当我重建我的项目时,我得到了这些错误 (我已经确保windows.h包含在我的directx标题之前 帮助!您很可能正在将旧的DirectX SDK头与Windows 8.x SDK头混合,并将旧的DXGI头与新的DXGI头混合。如上所述,如果要将旧的DirectX S

正在尝试将Directx工具包集成到我的游戏中。我遵循以下步骤:

一切都很顺利。尝试包含其中一个标题(SpriteFont.h)时,我会出现以下错误:

我已经将项目重构为8.1以匹配我的游戏,并重新构建了导入的项目,效果非常好。当我重建我的项目时,我得到了这些错误

(我已经确保windows.h包含在我的directx标题之前


帮助!

您很可能正在将旧的DirectX SDK头与Windows 8.x SDK头混合,并将旧的DXGI头与新的DXGI头混合。如上所述,如果要将旧的DirectX SDK与Windows 8.x SDK混合,则需要颠倒传统的包含路径顺序

不要使用此选项:

<IncludePath>$(DXSDK_DIR)Include$(IncludePath);</IncludePath>
<LibraryPath>$(DXSDK_DIR)Lib\x86$(LibraryPath);</LibraryPath>
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(LibraryPath);</LibraryPath>
$(DXSDK\u DIR)Include$(IncludePath);
$(DXSDK_DIR)Lib\x86$(LibraryPath);
$(DXSDK_DIR)Lib\x64;$(LibraryPath);
使用以下命令:

<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x86</LibraryPath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x64;</LibraryPath>
$(IncludePath);$(DXSDK\u DIR)Include
$(库路径);$(DXSDK_目录)Lib\x86
$(库路径);$(DXSDK_目录)Lib\x64;
如果您使用的是较旧的东西,如
D3DX
头文件,那么也有一些
#include
技巧可以隐式地提取旧头文件

理想情况下,您应该删除对旧DirectX SDK路径的所有使用,但如果您想在Windows 7上使用XAudio,则需要继续使用它。有关详细信息,请参阅。

您可能可以尝试在.cpp文件而不是.h头文件中包含“SpriteFont.h”。
我用这种方法解决了这个问题。

如果您想使用旧版DirectX SDK和更新的Visual studio版本(如vs2015、vs2017或vs2019)。我建议您阅读本文。我认为官方网站遗漏了一些内容:

  • 对于编译的每个代码示例,请确保

    $(DXSDK\U DIR)\Utilities\bin\x86;在$(ExecutablePath)之前

    ....\Common;$(DXSDK\U目录)\Include;在$(IncludePath)之前

    $(DXSDK\U DIR)\Lib\x86;…\Common;$(VC\U LibraryPath\U x86);在$(WindowsSDK\U LibraryPath\U x86)之前

  • 当你构建效果框架时,你也应该保证这个顺序

  • 将d3dx11effect.h复制到公共目录后,需要更改一行,如下所示:

  • 如果你遇到这个错误
  • dxerr.lib(dxerrw.obj):错误LNK2019:函数“long\uu stdcall StringVPrintfWorkerW(无符号短*、无符号整数、无符号整数*、无符号短常量*、字符*)中引用的未解析外部符号uu vsnwprintf”(?StringVPrintfWorkerW)@@YGJPAGIPAIPBGPAD@Z)

    您可以添加legacy_stdio_definitions.lib;如下所示: 无需 和dxerr.h和dxerr.cpp现在是

  • 我提交了我的vs2019可构建代码。它是第1章和第6章可构建的box demo,但随着我学习本书,我将构建更多的章节

  • 请随意在此处或!

    您好!我的错误与Scrumble完全相同。我确实如您在回答中所说的那样做了,但错误仍然存在。我在dx标题之前也已包括在内。我的项目正在编译(使用direct x)在我开始创建从其他类继承的类之前,您认为这可能是错误的原因吗?(我使用的是Windows 10,64位)。如果您有时间提供帮助,这将非常令人惊讶!谢谢:)您从哪些类“继承”?