0

我刚刚在我的 d3d11 应用程序中实现了 dcomp,在尝试编译后,我遇到了 1.5k 错误,这些错误都与 d2d 相关。我根本没有在我的应用程序中使用 d2d 并且很困惑,在查看 dcomp.h 时,很明显 dcomp 包含 d2d1_1.h 作为其中的一部分。每当我包含 dcomp.h 或 d2d1_1.h 时,我都会遇到这些错误。大多数与 dcommon.h 相关的未定义类型(我尝试包括与错误没有区别)

我已尝试通过执行以下操作来解决此包含问题:包含 dcommon.h、包含 d2d1.h、将 windows sdk 更新到最新版本。这些都没有解决问题,我仍然不能在不包括 d2d1_1.h 的情况下包括 dcomp.h。有谁知道如何解决这个问题?这个问题与代码无关,因为无论我的 dcomp 代码如何,都会发生这些错误,纯粹包含这些文件会引发这些错误。

示例错误: Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "D2D_RECT_L" is undefined ext C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\d2d1_1.h 57

#include <dcommon.h>
#include <d2d1.h>
#pragma comment( lib, "d2d1" )
#include <wrl.h>
#include <dxgi.h>
#include <dcomp.h>
#pragma comment( lib, "dxgi" )
#pragma comment( lib, "dcomp" )
4

2 回答 2

1

旧版 DirectX SDK 在现代 Windows SDK 中有许多文件的旧版本冲突。建议尽可能不要使用旧版 DirectX SDK,而只使用 Windows SDK。

除了删除使用旧版 DirectX SDK 的要求外,这些建议意味着您不需要使用已停产的旧版DirectX 最终用户运行时包(又名 DXSETUP)。请参阅此博客文章

仍然使用旧版 DirectX SDK 的唯一情况是 Windows XP,在这种情况下,无论如何您都必须使用 Windows 7.1A SDK。请参阅此博客文章

请参阅此博客文章Microsoft Docs

于 2022-01-04T18:44:28.043 回答
0

发现问题是 DirectX June 2010 sdk,它显然是与 Visual Studio 一起安装的,出于某种原因,MSVC 决定更喜欢使用这些文件,而不是最新的 windows sdk 中包含的文件。删除 2010 年 6 月的 SDK 后,所有这些错误都消失了。

于 2022-01-01T06:29:23.517 回答