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

Sjb*_*ack 1 c++ mfc midl vcproj visual-studio-2013

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

error MIDL2072: inapplicable attribute : [annotation] [ Field 'pDescription' of Struct 'D3D10_MESSAGE' ( Type 'D3D10_MESSAGE' ) ]
Run Code Online (Sandbox Code Playgroud)

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

任何帮助或建议表示赞赏,谢谢.

Han*_*ant 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,时机已到.