【问题标题】:Warnings using VS2012 and DirectX (june 2010)使用 VS2012 和 DirectX 的警告(2010 年 6 月)
【发布时间】:2013-04-25 20:37:34
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    简而言之:部分 DXSDK 现在包含在 Win8 SDK 中。如果你想在 VS2012 中使用它们,最好不要使用 DXSDK。不幸的是,Microsoft 不再支持 DX 的某些部分,因此没有包含在新的 Win8 SDK 中。突出的例子是 D3DX 实用程序库。如果你想使用这些,你必须使用旧的 DXSDK。

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

    【讨论】:

    • 所以您是说将整个 DX Lib 添加到 VC 项目中,但制作需要链接到 VC 项目的包含文件的单独副本?这个单独的文件夹将只包含您需要的不与 Win8 SDK 重叠的 .h 文件。
    • @mk1 默认应始终使用 Windows SDK 中的文件。如果您需要 WinSDK 未提供的其他内容(如 D3DX),请从 DXSDK 中挑选您需要的文件并将它们放入单独的目录中。仔细检查该目录中的所有文件是否在 WinSDK 中都没有 doubleganger,您应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2011-05-05
    • 2011-04-26
    • 2015-09-16
    • 2018-09-29
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多