我剛剛在我的 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" )
uj5u.com熱心網友回復:
舊版 DirectX SDK 在現代 Windows SDK 中有許多檔案的舊版本沖突。建議盡可能不要使用舊版 DirectX SDK,而只使用 Windows SDK。
如果您需要舊版 D3DX9、D3DX10 和/或 D3DX11,您可以使用沒有沖突的Microsoft.DXSDK.D3DX NuGet 包。請參閱此博客文章。
如果您需要適用于 Windows 7 的 XAudio2,請使用最新版本的 XAudio2的Microsoft.XAudio2.Redist NuGet 包。請參閱Microsoft 檔案。
如果使用 Windows 7 的 XInput,則使用自 Windows Vista 以來內置于所有 Windows 版本中的 XInput 9.1.0。否則使用 XInput 1.4。請參閱此博客文章。
如果使用 XNAMath,請移至 Windows SDK 中的 DirectXMath。請參閱Microsoft Docs和GitHub。
除了洗掉使用舊版 DirectX SDK 的要求外,這些建議還意味著您不需要使用已停產的舊版DirectX 最終用戶運行時包(又名 DXSETUP)。請參閱此博客文章。
仍然使用舊版 DirectX SDK 的唯一情況是 Windows XP,在這種情況下,無論如何您都必須使用 Windows 7.1A SDK。請參閱此博客文章。
請參閱此博客文章和Microsoft Docs。
uj5u.com熱心網友回復:
發現問題是 DirectX June 2010 sdk,它顯然是與 Visual Studio 一起安裝的,出于某種原因,MSVC 決定更喜歡使用這些檔案,而不是最新的 windows sdk 中包含的檔案。洗掉 2010 年 6 月的 SDK 后,所有這些錯誤都消失了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406604.html
標籤:
