SDL (Simple Directmedia Layer)는 멀티 플랫폼 GUI 개발 및 게임 개발에 흔히 쓰인다

각설하고,

SDL을 Visual Studio와 함께 사용할 때 꼼꼼히 설정을 해주지 않으면

Link Time에서 이런저런 에러가 발생한다

 

아래 사항을 꼼꼼히 확인하자

 

(1) SDL을 특정 Working Directory에 설치한다(압축을 푼다)

편의상 f:\work\sdl_12 폴더에 풀었다고 치자

(2) Visual Studio 2008에서 Empty Project를 생성한다

Win32로 해도 가능하지만, 편의상 Console Project로 한다

(3) 생성한 프로젝트의 소스파일 tree에 예를 들어 main.cpp를 생성한다

그리고 당연히 이 안에는,

int main(int argc, char* argv[])

로 시작하는 샘플 코드를 넣어둔다

(4) 추가 포함 파일 경로를 설정한다

vs2008 (한글) 기준으로: 도구->옵션->프로젝트및솔루션->VC++디렉터리->포함파일

에 f:\work\sdl_12\include 를 추가한다

(5) 추가 라이브러리 파일 경로를 설정한다

vs2008 (한글) 기준으로: 도구->옵션->프로젝트및솔루션->VC++디렉터리->라이브러리파일

에 f:\work\sdl_12\lib 를 추가한다

(6) 런타임라이브러리를 설정한다

vs2008 (한글) 기준으로: 프로젝트->(프로젝트이름)속성->구성속성->C/C++->코드생성

에 "런타임 라이브러리"를 "다중 스레드 DLL”로 설정한다. 여기서 DEBUG 여부는 don’t care

(7) 추가종속성을 설정한다

vs2008 (한글) 기준으로: 프로젝트->(프로젝트이름)속성->구성속성->링커->입력

의 "추가종속성" 부분에 sdl.lib 파일과 sdlmain.lib 파일을 추가한다

한편! 여기서 바로 밑에 있는 "모든 기본 라이브러리 무시" 부분은 "아니오"로 해준다!!!

자! 여기까지 했으면 솔루션 Build 하고서 실행파일이 생긴 곳에 SDL.DLL을 같이 넣어주거나

또는 시스템 디렉토리(난 이 방법 선호하지 않으이!)에 넣어주고 실행 파일을 기동해 본다

 

위와 같이 정확하게 해주면 100% 동작한다.

p.s. : console project가 아닌 win32 project로 생성했으면 main() 대신

WinMain()만 사용하면 된다고 하나 테스트 해보지 않았다