Visual Studio 2010으로 Windows 2000용 프로그램 만들기
작년에 필요해서 찾아만 뒀던 내용인데 이제 정리해 본다.
Visual Studio 6이 언제 나왔나 찾아 보니 1998년 6월이다. 이제 곧 만 15년이 되는 컴파일러이지만 여기는 여전히 현역이다. Visual Basic은 코드만 남아 있고 다루는 사람이 없으니 좀 더 정확히 말하자면 이제 Visual C++ 6을 버리고 컴파일러도 최신으로 바꿔야 한다는 공감대는 모아졌는데 문제는 컴파일러별로 지원하는 OS가 다르다는 점이다.
VS 2008 | VS 2010 | VS 2012 | |
Win 2k | O | X | X |
Win XP SP2 | O | O | O |
Win Vista 이상 | O | O | O |
Visual Studio 6이 현역인 것처럼 Windows 2000 역시 현역으로 뛰고 있다보니 컴파일러 선택 폭이 매우 좁아진다. 기껏 올려 봐야 2008인데 이 건 좀 맘에 들지 않는다. VS 2012도 함께 쓸 것이므로 그만큼은 아니더라도 C++11 맛이라도 볼 수 있었으면 하는 게 바람이랄까.
VS 2010에서 만든 프로그램을 Win 2k에서 쓰지 못하는 건 Win 2k에 없는 API를 호출하기 때문이다. 이에 대해서는 Visual C++ 2010 Apps Don’t Support Windows 2000이란 글을 참조한다. 결론적으로 이를 우회하도록 코드를 변경하면 되는데 방법은 다음과 같다. 이 방법은 How to get Visual C++ 2010 MFC applications to run on Windows 2000이란 글을 정리한 것이다. 참고로 아래 내용은 Windows 2000 SP4 + Update Rullup 1 KB891861을 적용한 것을 전제로 한다.
- Visual Studio 2010을 실행해 MFC 프로젝트를 생성한다.
- MFC 사용은 static library로 한다. 여기서는 간단히 다이얼로그로 생성했다.
- 지금부터는 프로젝트 속성에서 Configuration: All Configurations를 선택하고 진행한다.
- 프로젝트 이름을 마우스 오른쪽 버튼으로 선택한 후 ‘Build Customizations…’ 메뉴를 선택한다.
- Build Customization Files 창이 뜨면 masm 항목을 선택한 후 OK 버튼을 누른다.
- vs10_2k_mfc.asm 파일을
프로젝트 소스 디렉터리에 복사하고프로젝트에 추가한다. - 프로젝트 속성을 열어 보면 Microsoft Macro Assembler 항목이 생겨야 한다.
- vs10_2k_mfc.h 파일을
프로젝트 소스 디렉터리에 복사하고프로젝트에 추가한다. - stdafx.cpp 파일을 열고 다음처럼 #include “stdafx.h” 아래에 vs10_2k_mfc.h 파일을 경로에 맞춰 포함한다.
12#include "stdafx.h"#include "vs10_2k_mfc.h" - 프로젝트를 빌드한다.
- gdiplus.dll을 실행 파일과 함께 두고 실행한다.
콘솔 프로그램 역시 과정은 동일하지만 C 런타임은 DLL을 사용하지 않는 버전으로 직접 바꿔야 한다. 6번 과정에서 vs10_2k_con.asm 파일을 사용하고 stdafx.cpp 파일은 변경할 필요 없다.
소스 코드는 여기에서 받을 수 있다.