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

The*_*ski 3 c++ winapi directx-11 c++11 visual-studio-2012

我正在尝试继续在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'
Run Code Online (Sandbox Code Playgroud)

有没有办法让警告消失,而不会禁用它们.或者我应该将我的代码转换为具有directx的Windows sdk 8.0,然后从项目中完全删除旧的DX(2012年6月).

Com*_*sMS 5

情况很复杂.MSDN有一个冗长的页面,全文.

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

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