2014-07-15 8 views
1

저는 최근 Visual Studio 2013으로 이동하고 Windows SDK 8.1 및 v120_xp 도구 집합을 사용하기 위해 모든 C++ 프로젝트를 업그레이드했습니다. 프로젝트의 대다수는 컴파일하고 내가 그러나 다음과 같은 오류와 유사한 몇 가지 오류 빌드를 거부 할 두 개의 프로젝트를해야합니까 잘 작동됩니다v120_xp 도구 모음이 포함 된 Visual Studio 2013 프로젝트의 MIDL 2072 오류가 있습니다.

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

모든 오류가 d3d10sdklayers.idl 파일을 참조하십시오. 이것은 파일을 혼자 잘 컴파일하면 프로젝트 idl 파일이 프로젝트의 일부로 컴파일 될 때 발생합니다.

감사의 말에 감사드립니다.

답변

5

and upgrade all my c++ projects to use 8.1 of the windows SDK

그게 잘못되었습니다. v120_xp 도구 세트를 사용하면 버전의 Windows SDK를 사용합니다. 버전 7.1, XP와 아직 호환되는 마지막 것. #include 파일이 다르면 midl.exe와 같은 빌드 도구가 더 오래되었습니다.

d3d10sdklayers.idl의 8.1 버전에서이 이전 버전의 midl.exe를 사용할 수 없습니다. 여기에는 처리 방법을 알지 못하는 속성이 있습니다. 이 파일에있는 _Field_size_(DescriptionByteLength)에 질식합니다. midl.exe의 8.x 버전 만 처리 할 수 ​​있습니다.

이 문제를 해결할 수있어서 다행입니다. 8.1 SDK 헤더에 더 많은 숨겨진 트랩이있어 프로그램이 XP에서 제대로 작동하지 않게됩니다. 진단하기가 너무 어렵습니다. XP 호환성이 필요하다면 이 7.1 헤더를 사용해야합니다. 아마도 VC++ 디렉토리 설정에서 프로젝트에 끼친 피해를 고쳐야 할 것입니다. 아니면 지원 XP에서 포기, 시간이 왔습니다.

+0

한스는 훌륭한 아바타입니다. +1 –