2010-01-29 2 views
2

내가 VS2005에서 VS2008에 우리의 프로젝트를 통해 이동하기 위해 노력하고있어에서 컴파일 오류가 발생하고 MFC 프로젝트에 빌드 오류에 실행하고 있습니다 :는 VS2008를 설치 한 후, 나는 WINNT.H

C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64' 

I 이것이 SDK 문제이거나 일부 포럼에서 제안한 것처럼 디렉토리 등록 문제를 포함한다고 생각했지만 문제가 아닌 것 같습니다. 이걸 본 사람 있어요? 이걸 추적하려고 할 때 무엇을 찾아야합니까?

내 프로젝트의 stdafx에서 WINVER 전 처리기 플래그를 늘려야하는지 궁금합니다. 그들은 꽤 나이 :

#ifndef WINVER    
#define WINVER 0x0500  
#endif 

#ifndef _WIN32_WINNT   
#define _WIN32_WINNT 0x0500 
#endif      

#ifndef _WIN32_WINDOWS 
#define _WIN32_WINDOWS 0x0510 
#endif 

#ifndef _WIN32_IE   
#define _WIN32_IE 0x0500  
#endif 

감사

답변

3

이것은 DirectShow 포함 파일이 포함 된 프로젝트에서만 발생합니다. 문제는 Basetsd.h가 Windows SDK의 Basetsd.h를 포함하기 전에 포함되는 DirectShow SDK의 일부인 것입니다. DirectShow 버전은 (이전 버전이기 때문에) POINTER_64를 정의하지 않았기 때문에 내가보고 한 문제가 발생합니다.

해결 방법은 문제가되는 프로젝트의 추가 설정에 SDK의 include 디렉토리를 추가하는 것입니다. 더 이상 VS2008에서 플랫폼 SDK의 위치입니다

"$(VCInstallDir)PlatformSDK\include" 

: 이전의 SDK이 지침은 다음과 같이 주어진 포함하기 때문에 내가 VS2005에서 VS2008로 업그레이드 한 후이 일어나고 시작

"$(WindowsSdkDir)\include" 

: 마찬가지로

+0

DirectShow 및 VS2008을 사용하여 동일한 문제가 있습니다. 불행히도, 귀하의 솔루션은 내 MS SDK 버전 6.0, 7.0을 설치 한 경우에도 도움이되지 않습니다. 제안이 있습니까? –

0
당신은 당신에 stdafx.h에서 해당 WINVER 매크로를 제거하려고한다

. 이러한 버전 (5.0 및 5.1)은 Win64보다 먼저 나올 수 있으므로 PVOID64에 대한 선언이 없을 수 있습니다.

1

VS2005RC (질문의 VS2008 대신)를 VS2005와 함께 설치 한 후이 정확한 문제가 발생했습니다. 카림의 대답은 대부분이 문제에 관한 것이지만 그의 해결책은 나에게 도움이되지 못했다. 다행히도 직장에있는 다른 사람이 이미이 문제를 해결했습니다.

문제는 VS 설치 프로그램이 DirectX9 SDK를 발견하여 사용자 별 디렉터리 "속성"파일에 저장 한 것 같습니다. 따라서 우리에게 맞는 수정 프로그램은 사용자의 디렉터리 속성 파일 (텍스트 편집기 사용)을 편집하고 "dx90sdk"디렉터리에 대한 모든 참조를 제거한 다음 Visual Studio를 다시로드하는 것입니다. 잘 그 여분의 #include 전처리 문을 사용하지 않도록 할 수 있도록, 너무 카림의 situaton에 적용 할 수있는

%USERPROFILE%\appdata\local\microsoft\msbuild\v4.0\Microsoft.Cpp.Win32.user.props 

이 수정 :

문제의 파일에 저장받을 것으로 보인다.

관련 문제