VS.NET(VS2002)에서 MFC 프로젝트로 만들었던 프로그램을 VC++10 프로젝트로 변환하여 컴파일 했더니 에러가 발생하면서 아래의 경고가 나왔습니다.
C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcore.h(35):#error This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.
에러 내용은 프로젝트에서 정의된 _WIN32_WINNT 버전이 0x403인데 atlcore.h는 이 버전이 최소 0x0501 이상이 되어야 한다는 것입니다.
그래서 _WIN32_WINN를 정의한 stdafx.h 파일을 열어보니
#define _WIN32_WINNT 0x0400
되어 있었더군요. 그래서 일단 이것을 최신이 좋다라는 생각에 아래와 같이 했습니다. ^^;;
#define _WIN32_WINNT 0x0600
그랬더니 이제는 아래와 같은 에러가 나오더군요. -_-;
c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxcmn3.inl(29): error C2065: 'CCM_SETWINDOWTHEME' : 선언되지 않은 식별자입니다.
그래서 바로 구글링 들어갔습니다.
쉽게 저와 같은 에러가 나와서 질문을 올린 글을 찾았고 답변도 보았습니다.
문제 해결은 stdafx.h 파일에 정의된 버전의 숫자를 아래와 같이 하면 된다고 하더군요
// Modify the following defines if you have to target a platform prior to the ones specified below.
// 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로 포팅하면서 정말 정말 오랜만에 이런 문제를 겪어 보게 되고 해결 방법을 포스팅 할 수 있었습니다.
혹시 앞으로 또 이런 경우가 발생하면 바로 바로 공유하도록 하겠습니다.
출처: http://vsts2010.net/411
=================================
=================================
=================================
'프로그래밍 관련 > 프로그래밍 관련팁' 카테고리의 다른 글
비쥬얼스튜디오 2010 창화면이 안 바꾸어지거나 빌드가 느릴때 (0) | 2011.01.19 |
---|---|
vs2010 다이렉트 라이브러리 설정시 __RPC__out_xcount_part 에러 (0) | 2010.11.11 |
비주얼 스튜디오 2010 환경에서 DirectX의 컴파일이 되지 않을 때 (1) | 2010.11.10 |
VS 2010 사용 느낌 그리고 C++ x0 추가 기능 AUTO (0) | 2010.11.09 |
MFC등 아주 유용한 팁 (0) | 2010.11.03 |