난 여전히 VC++ 6.0을 사용해왔다.
컴파일된 실행파일을 어떤 윈도우(물론 2K 이상)에서도 실행할 수 있다는 점이 가장 큰 이유다.
물론, 정적 라이브러리에서 MFC 사용으로 설정하면 되지만, 실행파일의 크기가 너무 커진다.
그런데, 이제 보니 컴파일러 설정 등을 조금만 손대면 VS2005 이상에서도 유사한 결과를 만들 수 있었다.
우선, targetver.h을 수정한다.
XP에서 동작하는 프로그램을 원하면 이 정도면 된다.
#pragma once
#include <winsdkver.h>
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#include <SDKDDKVer.h>
그리고, 프로젝트 속성에서 다음 부분을 손대면 된다.
- 일반 → MFC 사용: 표준 Windows 라이브러리 사용
- C/C++ → 코드 생성 → 런타임 라이브러리: 다중 스레드(/MT)
- 링커 → 진입점: wWinMainCRTStartup
이렇게 설정하고 컴파일하면 Windows XP에서도 런타임 라이브러리 설치 없이 실행할 수 있다.
하지만… 정적 라이브러리에서 MFC 사용으로 설정했을 때와 실행파일 크기가 비슷한 게 함정… OTL
덧. 이걸 뒤지다가 VS2012에서는 업데이트 3을 설치해야 XP에서 실행되는 파일을 만들 수 있다는 걸 알았다.
MS가 정말로 XP를 죽이고 싶은 것 같다. 정말로.