带有v120_xp工具集的Visual Studio 2013项目出现MIDL 2072错误

时间:2014-07-15 10:40:52

标签: c++ mfc visual-studio-2013 midl vcproj

我最近搬到了visual studio 2013并升级了所有的c ++项目,使用了8.1的windows SDK和v120_xp工具集。绝大多数项目正在编译和工作正常但我有两个项目拒绝构建,有几个类似于以下错误的错误:

error MIDL2072: inapplicable attribute : [annotation] [ Field 'pDescription' of Struct 'D3D10_MESSAGE' ( Type 'D3D10_MESSAGE' ) ]

所有错误都是指d3d10sdklayers.idl文件。当项目idl文件被编译为项目的一部分时,如果我单独编译文件就会发生这种情况。

感谢任何帮助或建议,谢谢。

1 个答案:

答案 0 :(得分:5)

  

并升级所有我的c ++项目以使用Windows SDK的8.1 ​​

那就出错了。当您使用v120_xp工具集时,则使用Windows SDK的版本。版本7.1,最后一个仍与XP兼容的版本。使用不同的#include文件,并构建较旧的midl.exe工具。

您无法在d3d10sdklayers.idl的8.1版本上使用此旧版本的midl.exe。它包含它不知道如何处理的属性。它在该文件中出现的_Field_size_(DescriptionByteLength)上窒息。只有8.x版本的midl.exe可以处理它。

你很幸运遇到这个问题,8.1 SDK标题中有更多隐藏的陷阱会使你的程序在XP上无法正常工作。很难诊断。如果您需要兼容XP,那么必须使用7.1标头。您必须解决您对项目造成的损害,可能是VC ++目录设置。或者放弃支持XP,时机已到。