2012-10-13 3 views
13
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 

이 오류는 컴파일하는 동안 계속 팝업됩니다. 컴파일에 영향을 미치지 않는 것 같지만 어떻게 제거해야합니까? 나는 그것을 무시함으로써 무엇인가를 위험에 빠뜨리고 있습니까?정의되지 않은 _WIN32_WINNT 제거 방법?

답변

12

WinSDKVer.h를 통해 정의됩니다. 따라서 소스 코드 상단 (예 : stdafx.h 시작 부분)에 명시 적으로 정의하면 경고가 제거됩니다.

(WinSDKVer.h의 _WIN32_WINNT_MAXVER과 비교하여) 동일한 값으로 정의하면 아무 것도 손상시키지 않을 가능성이 높습니다. 예를 들어

는 Windows 7 및 .NET Framework 3.5 서비스 팩 1 용 윈도우 소프트웨어 개발 키트의 WinSDKVer.h (SDK)가 포함되어있는 가장 오래된 Windows 운영 체제에

// This list contains the highest version constants supported by content 
// in the Windows SDK. 

// [...] 
#define _WIN32_WINNT_MAXVER  0x0601 
+1

StdAfx.h에 거의 처음에 추가하는 것이 좋습니다. 다음은 각 OS에 대한 값 목록입니다. http://msdn.microsoft.com/en-us/library/aa383745%28VS.85%29.aspx –

14

설정은 당신이 원하는 당신의 실행할 프로그램. 가능한 값은이 MSDN 문서 Using the Windows Headers에 나와 있습니다.

당신은, 또는 비주얼 C++에서 지원하는 /D 컴파일러 옵션을 지정하여 각 소스 파일에 #define 문을 사용하여 이러한 기호를 정의 할 수 있습니다.

#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 

설정하려면 :

#define WINVER 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 

다음 문을 사용하여 소스 파일에 _WIN32_WINNT을 설정하려면 :

예를 들어, 사용, 소스 파일에 다음 문을 WINVER을 설정합니다 _WIN32_WINNT/D 컴파일러 옵션을 사용하여 다음 명령을 사용하십시오.

cl -c /D_WIN32_WINNT=0x0502 source.cpp 
1

참고 : #define _WIN32_WINNT은 "stdafx.h"를 포함하여보다 앞에 이되어야합니다.

+0

이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – Stonz2

+2

@ Stonz2 I dunno ... [A] OP가 "_WIN32_WINNT 정의되지 않았습니다"오류가 발생한다고 불평합니다. [B] _WIN32_WINNT를 정의하여 어디에서 오류를 제거 할 수 있는지 알려줍니다 ("어떻게 제거해야합니까?"). [C] 이런 종류의 도움이되지 않습니까? – Pierre

관련 문제