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

时间:2016-07-03 22:31:53

标签: syntax directx toolkit

尝试将Directx工具包集成到我的游戏中。我按照这里的步骤进行了操作:

https://github.com/Microsoft/DirectXTK/wiki/Adding-the-DirectX-Tool-Kit

一切都很顺利。当试图包含其中一个标题(SpriteFont.h)时,我收到了这些错误enter image description here

我已经将项目重构为8.1以匹配我的游戏,并重建了导入的项目并且效果很好。在重建我的项目时,我收到了这些错误。

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

帮助!

3 个答案:

答案 0 :(得分:5)

您很可能将旧版DirectX SDK标头与Windows 8.x SDK标头混合,并将旧的DXGI标头与新标头混合使用。如MSDN所述,如果您想将旧的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>

使用此:

<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x86</LibraryPath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x64;</LibraryPath>

如果您使用#include标题之类的旧内容,可以隐式拾取旧标题,还有一些D3DX技巧。

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

答案 1 :(得分:0)

您可能可以尝试在.cpp文件而不是.h标头文件中#include“ SpriteFont.h”。 我以这种方式解决了这个问题。

答案 2 :(得分:0)

如果要使用旧版DirectX SDK和更新的Visual Studio版本(如vs2015或vs2017或vs2019)。我建议您阅读此link from book official site。我认为官方网站缺少某些内容:

  1. 对于您编译的每个代码示例,请确保

    $(DXSDK_DIR)\ Utilities \ bin \ x86;在$(ExecutablePath)之前;

    .... \ Common; $(DXSDK_DIR)\ Include;在$(IncludePath)

    之前

    $(DXSDK_DIR)\ Lib \ x86; .... \ Common; $(VC_LibraryPath_x86);在$(WindowsSDK_LibraryPath_x86)之前

enter image description here 在构建Effects框架时,您还应该保证此顺序。

  1. Copy the files: d3dx11effect.h, Effects11d.lib and Effects11.lib into the book’s Common directory (overwriting the old ones).

将d3dx11effect.h复制到Common目录后,您需要像这样更改一行: I think this could help @Scumble373

  1. 如果您遇到此错误

dxerr.lib(dxerrw.obj):错误LNK2019:函数“ long __stdcall StringVPrintfWorkerW(unsigned short *,unsigned int,unsigned int *,unsigned short const *,char *)”中引用的未解析的外部符号__vsnwprintf(?StringVPrintfWorkerW @@ YGJPAGIPAIPBGPAD @ Z)

您可以添加legacy_stdio_definitions.lib;像这样: enter image description here,而无需add dxerr.h and dxerr.cpp to book’s Common directory and add these two files to your project dxerr.h和dxerr.cpp现在为here

  1. 我提交了vs2019可构建代码here。这是可构建的第1章和第6章box演示,但是当我学习本书时,我将建立更多的章。

请在此处或github repo上发表评论!