본문 바로가기

지구인프로그램/기타다운로드

DirectX SDK 9.0b Download


위 다운로드는 설치파일이 아니고 include와 lib폴더만 있는 것입니다.
프로그래밍하는데는 저 폴더들만 추가해주면 아무 문제없습니다.


한동안 손 놓고 있었던 게임프로그래밍을 다시 한번 해보기 위해 DirectX SDK 9.0b를 찾아다녔습니다. 그런데 어찌된 일인지 너무 찾기가 힘들었습니다. 다음, 네이버, 구글, MSDN 등 여기저기 뒤져봐도 없더군요. 다행히 AtFile이라는 곳에서 겨우겨우 찾았네요. 아마 이제는 dx9.0c만 사용하도록 권장하기때문인지 모르겠습니다. 하지만 예전에 작성해놓았던 소스들이 모두 visual studio 6.0버전으로 작성했던 것들이라서 dx9.0b에서 컴파일을 해야만 했습니다.(dx9.0c는 visual studio 6.0버전을 지원하지 않습니다.) 따라서 컴파일러는 visual studio 2008을 사용한다하더라도 DirectX SDK는 9.0b를 써야만 합니다.

9.0b와 9.0c는 함수 사용법이 많이 다릅니다. 즉, 코드 호환성이 전혀 없습니다. 물론 조금만 수정하면 되기는 합니다. 어쨋든 그렇게 dx9.0b를 깔고 visual studio 2008에서 컴파일 했더니 수많은 에러가 발생을 하였습니다. 혹시나 저처럼 visual studio 6.0을 쓰다가 2008로 넘어온 사람들을 위해서 에러 잡는 법을 설명하겠습니다. 물론 다른 방법들도 있을것이지만 저는 이렇게 해결했습니다.

에러 1> Winnt.h 에서의 에러.

typedef void *PVOID;
typedef void *POINTER_64 PVOID64;


위 부분을 아래와같이 수정해주면 됩니다.

typedef void *PVOID;
typedef void *POINTER_64;
typedef POINTER_64 PVOID64;


에러 2> for() 문에서의 변수 영역 변경.

이전 for()문에서는 선언된 변수가 for()문의 바깥쪽까지 그 영역을 가지고 있었지만
이제는 for()문 안으로 영역이 축소되었습니다.

예를 들어보겠습니다.

1. visual studio 6.0 방식

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


2. visual studio 2008 방식

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


두번째 for()문을 유심히 보시면 같은 i라는 변수를 사용하는데 visual studio 2008에서는 또 선언을 해줘야 함을 알 수 있습니다. 즉, 변수 i는 for()문 안에서만 유효한 지역변수가 되어버린 겁니다. 소스에서 이 부분을 모두 고쳐려면 좀 힘들겠지만 오히려 잘 변경되었다고 생각이 되어지네요.

에러 3> d3dtypes.h, uuids.h 에서 표시할 수 없는 문자가 있으니 유니코드로 변경하라는 에러.

이건 간단하게 해결이 되네요.
visual studio 2008에서 해당 파일을 열고 File>Advanced Save Options 메뉴를 선택하고 Unicode - Codepage 1200으로 변경 후 그냥 저장만 해주시면 됩니다.