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。不幸的是,Microsoft 不再支持 DX 的某些部分,因此没有包含在新的 Win8 SDK 中。突出的例子是 D3DX 实用程序库。如果你想使用这些,你必须使用旧的 DXSDK。

在这种情况下,您必须确保两个 SDK 的不同版本中不包含相同的标头,这可能会很痛苦。对于这种情况,一个简单的解决方法是仅将所需的标头从 DXSDK 移动到单独的包含目录,以避免意外拉入错误的标头。

于 2013-04-26T10:19:26.057 回答