【DirectX12】D3D12HelloWindowを試す際のメモ

DirectX12の勉強で、写経してるときにぶつかったメモです。

 

DirectX12の公式サンプルがgithubにあります。

github.com

その中のD3D12HelloWindowをビルドすると、こんな感じのエラーを吐きます。

f:id:shiratori00:20180919190525p:plain

 

解決方法ですが、標準であれば

C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\winrt\wrl

のパスにあるevent.hの316行目と324行目の部分

return DelegateHelper::Traits::Callback...

return DelegateHelper::Traits::template Callback...

と修正します。

 

これでエラーがなくなり、ビルドがきれいに通ります。

ちなみに、管理者権限が必要で、VisualStudio上から直接修正できないので、VSCodeなりで修正する必要があります。

 

ちなみに、調べてみるとエラーの起きた理由はこちらに書いてありました。

C++ 準拠の改善 | Microsoft Docs

15.8以降より、

/permissive- モードでは、コンパイラが依存する nested-name-specifier の後にある場合にテンプレート名が優先されるためには、コンパイラで template キーワードが必要になりました。

/permissive- モードでは次のコードにより、C7510 が発生します: 'foo': use of dependent template name must be prefixed with 'template'. note: see reference to class template instantiation 'X' being compiled('foo': 依存するテンプレート名を使用する場合は 'template' のプレフィックスが必要です。注: コンパイルされているクラス テンプレートのインスタンス化 ’X’ のリファレンスを参照してください)

 

とのことです。注意しましょう。