Проект Visual Studio 2013 с набором инструментов v120_xp имеет ошибку MIDL 2072

Недавно я перешел на 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

Решение

и обновить все мои проекты C ++, чтобы использовать 8.1 из Windows SDK

Вот где это пошло не так. Когда вы используете набор инструментов v120_xp, то вы используете старый версия Windows SDK. Версия 7.1, последняя, ​​которая до сих пор совместима с XP. С #include отличными файлами и инструментами сборки, такими как midl.exe, которые старше.

Вы не можете использовать эту старую версию midl.exe в 8.1 версии d3d10sdklayers.idl. Он содержит атрибуты, которые он не знает, как обрабатывать. Это душит _Field_size_(DescriptionByteLength) это присутствует в этом файле. Только 8x версия midl.exe может справиться с этим.

Вам повезло столкнуться с этой проблемой, в заголовках 8.1 SDK есть гораздо больше скрытых ловушек, из-за которых ваша программа не работает должным образом на XP. Довольно сложно диагностировать тоже. Если вам требуется совместимость с XP, то вы должен используйте заголовки 7.1. Вы должны будете исправить ущерб, нанесенный проектам, предположительно в настройках каталогов VC ++. Или отказаться от поддержки XP, время пришло.

5

Другие решения


По вопросам рекламы [email protected]