Graphics Programming

고대의 프로젝트를 현대 개발 환경에서 빌드하기 본문

Season 1/Misc

고대의 프로젝트를 현대 개발 환경에서 빌드하기

minseoklee 2017. 1. 7. 23:18

Visual Studio .NET 2003, 그러니까 버전 넘버로 따지면 v7.1에서 작성된 비주얼 스튜디오 솔루션을 Visual Studio 2013에서 빌드를 시도해봤다. 무려 10년도 더 된 프로젝트다. 예상대로 수백개의 오류와 에러 메시지가 떴다.


Deprecated되었습니다

이걸 언제 일일이 고쳐... -_-

_CRT_SECURE_NO_WARNINGS와 _CRT_NONSTDC_NO_DEPRECATE를 전처리 옵션에 넣어서 통과.


더 이상 지원하지 않는 라이브러리입니다

MFC 멀티바이트는 더 이상 지원되지 않으니 유니코드를 써야 한단다.

그냥 마이크로소프트 사이트에서 MFC 멀티바이트 라이브러리를 설치해서 해결.


WINVER가 낮으시네요

MFC가 이번에는 윈도우즈 버전을 가지고 불평을 한다. 윈도우즈 10용 WINVER (0x0A00)으로 고쳐서 통과.


DLL이 없는데요??

가장 황당했던 오류. DLL 파일이 결과물인 프로젝트이고 빌드 후 다른 디렉토리로 복사하는 빌드 이벤트가 걸려 있었는데, 그런 DLL이 없다고 한다. 빌드 로그를 뒤져보니 결과 DLL와 메인 프로젝트에서 요구하는 DLL 이름이 일치하지 않음... 링커 옵션에서 이름을 고쳐서 해결.


정의되지 않은 변수입니다

예전 컴파일러에서는 변수의 스코프가 함수 단위였나 보다. 이런 식으로 작성된 코드가 많이 있었다.


void test() {

for(int i=0; i<10; i++){

// do something

}

i = i + 1; // for 밖에서 i를 참조

}


물론 지금은 안 된다. 다음과 같이 for 위로 i 선언을 빼서 해결.


void test() {

int i;

for(i=0; i<10; i++){

// do something

}

i = i + 1; // for 밖에서 i를 참조

}


하루종일 붙잡은 결과 빌드에 성공했다.



생각해보면 나는 항상 빌드 환경이 다 갖추어져서 코딩에만 집중하면 되는 상황이 많았다. 플래시 플랫폼, 자바 SE, 하스켈 플랫폼 등은 프로그래밍 언어와 더불어 네이티브 환경에 신경쓸 필요 없는 크로스플랫폼 API가 같이 설치되고, 컴파일할 때도 딱히 이런저런 옵션을 건드릴 필요가 없다. 이런 빌드 환경 맞추기는 어떻게 돌아가는 건지 이해가 잘 되지 않아 매번 고통을 받았고 이번에도 역시나 힘들었다.


당장은 로직 구현 능력을 연마할 필요가 없을 것 같다. 이런 빌드 프로세스를 이해하는 일이 더 시급하다.

Comments