TEUS.me

 
 

난 여전히 VC++ 6.0을 사용해왔다.

컴파일된 실행파일을 어떤 윈도우(물론 2K 이상)에서도 실행할 수 있다는 점[각주:1]이 가장 큰 이유다.

물론, 정적 라이브러리에서 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를 죽이고 싶은 것 같다. 정말로.



  1. VS2005 이후의 버전에서는 런타임 라이브러리(RTL)을 설치해야 됨 [본문으로]

공유하기

facebook twitter kakaoTalk kakaostory naver band

댓글

비밀글모드

  1. 서비스팩 까는 걸 미루고 있자니 notepad2-mod의 vs2012용 프로젝트 파일에 든 vs110_xp가 상당히 거슬리게 하더군요 ㅠㅠ
    2013.08.03 01:05 신고
    • 시험삼아 서비스팩을 안 깔고 컴파일해보니 그냥 컴파일이 안 되더군요. ㅡ.ㅡ;
      2013.08.03 17:38 신고
    • vcxproj 파일에서 vs110_xp를 vs110으로 수동으로 바꾸면 컴파일은 잘 됩니다만... XP에서 문제가 있겠죠..? ㅠㅠ
      2013.08.05 02:45 신고