VS.NET(VS2002)에서 MFC 프로젝트로 만들었던 프로그램을 VC++10 프로젝트로 변환하여 컴파일 했더니 에러가 발생하면서 아래의 경고가 나왔습니다.
에러 내용은 프로젝트에서 정의된 _WIN32_WINNT 버전이 0x403인데 atlcore.h는 이 버전이 최소 0x0501 이상이 되어야 한다는 것입니다.
그래서 _WIN32_WINN를 정의한 stdafx.h 파일을 열어보니
되어 있었더군요. 그래서 일단 이것을 최신이 좋다라는 생각에 아래와 같이 했습니다. ^^;;
그랬더니 이제는 아래와 같은 에러가 나오더군요. -_-;
그래서 바로 구글링 들어갔습니다.
쉽게 저와 같은 에러가 나와서 질문을 올린 글을 찾았고 답변도 보았습니다.
문제 해결은 stdafx.h 파일에 정의된 버전의 숫자를 아래와 같이 하면 된다고 하더군요
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later.
#define WINVER 0x0501 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif
#ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0501 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later.
#define _WIN32_IE 0x0500 // Change this to the appropriate value to target IE 5.0 or later.
#endif
이렇게 하니 문제 없이 빌드가 성공 되었습니다.
주위에서 VC++의 새로운 버전이 나와도 쉽게 사용하지 못하는 경우가 오래 전에 만들었던 프로젝트를 포팅 할 수 없어서 이전 버전을 어쩔 수 없이 사용한다는 이야기를 종종 듣습니다.
그러나 저는 운이 좋아서인지 2002버전부터 순차적으로 새 버전의 VC++을 사용할 수 있어서 VC++6에서 VS2002로 넘어갈 때만 빌드 문제를 겪었습니다.
그래서 이런 포팅에 대한 문제는 잘 알지 못합니다. 이번에는 예전에 만들었던 코드를 C++0x 코드로 바꾸고 싶어서 오래 전에 만들었던 프로젝트를 VC++ 10로 포팅하면서 정말 정말 오랜만에 이런 문제를 겪어 보게 되고 해결 방법을 포스팅 할 수 있었습니다.
혹시 앞으로 또 이런 경우가 발생하면 바로 바로 공유하도록 하겠습니다.
'프로그래밍 > VC++ 개발 코딩' 카테고리의 다른 글
메모리 누수, 0xcdcdcdcd 힙, 스택 메모리 초기 default 값. (0) | 2014.01.17 |
---|---|
struct 최적화 (0) | 2014.01.17 |
Visual Studio 2003을 비스타 및 Windows 7 에서 쓰기 (0) | 2014.01.17 |
#pragma pack(push, 1), #pragma pack(pop) (0) | 2014.01.17 |
[링크스크랩] [C / C++]12장. union(공용체)와 BitField (0) | 2014.01.17 |