使用VS2012和DirectX的警告(2010年6月)

时间:2013-04-25 20:37:35

标签: c++ visual-studio-2012 c++11 directx-11 winapi

我正在尝试继续处理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月)。

1 个答案:

答案 0 :(得分:5)

这很复杂。 MSDN有一个长full story的页面。

简而言之:DXSDK的部分内容现已包含在Win8 SDK中。如果您想使用VS2012,那么在不使用DXSDK的情况下最好。不幸的是,微软不再支持DX的某些部分,因此未包含在新的Win8 SDK中。突出的例子是D3DX实用程序库。如果你想使用它们,你将不得不拉入旧的DXSDK。

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