我最近搬到了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文件被编译为项目的一部分时,如果我单独编译文件就会发生这种情况。
感谢任何帮助或建议,谢谢。
答案 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,时机已到。