3

VS2012 で VS2010 プロジェクトの作業を続けようとしています。Directx 11 (2010 年 6 月) リリースを使用していますが、コードをデバッグするたびに、一連の警告が表示されます。

このような:

6>C:\Program Files\Microsoft DirectX SDK (June 2010)\Include\D2DErr.h(59):
warning C4005: 'D2DERR_WRONG_STATE' : macro redefinition
6>C:\Program Files\Windows Kits\8.0\Include\shared\winerror.h(49859):
see previous definition of 'D2DERR_WRONG_STATE'
6>C:\Program Files\Microsoft DirectX SDK (June 2010)\Include\D2DErr.h(64):
warning C4005: 'D2DERR_NOT_INITIALIZED' : macro redefinition
6>C:\Program Files\Windows Kits\8.0\Include\shared\winerror.h(49868):
see previous definition of 'D2DERR_NOT_INITIALIZED'

警告を無効にせずに非表示にする方法はありますか。または、コードを directx を含む Windows SDK 8.0 に変換し、古い DX (2012 年 6 月) をプロジェクトから完全に削除する必要があります。

4

1 に答える 1

5

それは複雑です。MSDN には、全文を掲載した長いページがあります。

一言で言えば、DXSDK の一部が Win8 SDK に含まれるようになりました。VS2012 でそれらを使用する場合は、DXSDK を使用しない方がよいでしょう。残念ながら、DX の特定の部分は Microsoft によってサポートされなくなったため、新しい Win8 SDK には含まれていません。顕著な例は、D3DX ユーティリティ ライブラリです。それらを使用する場合は、古い DXSDK を取り込む必要があります。

この場合、両方の SDK の異なるバージョンに同じヘッダーを含めないようにする必要がありますが、これは非常に面倒です。この場合の簡単な回避策は、必要なヘッダーのみを DXSDK から別のインクルード ディレクトリに移動して、誤って間違ったヘッダーを取得しないようにすることです。

于 2013-04-26T10:19:26.057 に答える