尝试将Directx工具包集成到我的游戏中。我按照这里的步骤进行了操作:
https://github.com/Microsoft/DirectXTK/wiki/Adding-the-DirectX-Tool-Kit
一切都很顺利。当试图包含其中一个标题(SpriteFont.h)时,我收到了这些错误:
我已经将项目重构为8.1以匹配我的游戏,并重建了导入的项目并且效果很好。在重建我的项目时,我收到了这些错误。
(我已经确定在我的directx标题之前包含了windows.h。
帮助!
答案 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。我认为官方网站缺少某些内容:
对于您编译的每个代码示例,请确保
$(DXSDK_DIR)\ Utilities \ bin \ x86;在$(ExecutablePath)之前;
.... \ Common; $(DXSDK_DIR)\ Include;在$(IncludePath)
之前$(DXSDK_DIR)\ Lib \ x86; .... \ Common; $(VC_LibraryPath_x86);在$(WindowsSDK_LibraryPath_x86)之前
将d3dx11effect.h复制到Common目录后,您需要像这样更改一行:
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;像这样: ,而无需add dxerr.h and dxerr.cpp to book’s Common directory and add these two files to your project dxerr.h和dxerr.cpp现在为here。
请在此处或github repo上发表评论!