[고뇌하는 자의 슬프고도 아름다운 뒷모습]

근 이번 주 초부터 DirectShow 때문에 머리에 쥐가 내렸다.
첨에 아무 생각없이 Visual Studio 2005를 기반으로 DirectShow 일을 진행했다.

#1. 왜 내 허락도 없이 그랬니?
첨엔 Visual Studio 2005를 기반으로 DirectShow 프로그래밍을 했다.
분명, 내 기억이 맞다면, DirectShow로 프로그래밍을 하려면.. DirectX SDK를 깔면 되었는데...
DirectX SDK 9.0c를 깔았음에도 불구하고.. Compile 조차 안되는게 아닌가?!!!!

첨엔 DirectX를 지우고 다시 깔아도 봤다.. 그런데 알고보니...
DirectX SDK 8.1 이후 버젼부터는 DirectShow SDK가 Microsoft Platform SDK로 포함되었단다..
"왜!! 내 허락도 없이 그냥 바꾸냐고!!!"

교훈: 항상 최신 정보에 익숙하도록 하자.. 그러나, 그러기엔 최신 정보는 너무나 빨리 쏟아진다.

#2. 왜왜왜!!!!
한참 Visual Studio 2005에서 지시 받은 대로 DirectShow Wrapper Library를 구현하고 있었다.
부장님 왈, "Visual Studio 6.0에 Compatible하게 맹글어."
"헉!!!!-ㅁ-"..

지금까지 하던 모든 행위들을 접고... 다시 시작했다.
Visual Studio 6.0으로 예제프로그램부터 돌려봤다. 아.. 아니나다를까 무수하게 쏟아지는... 컴파일
에러들.. 분명! 2005랑 똑같은 헤더 파일들을 include하고 Lib 파일들을 link 했음에도...ㅠㅠ

#3. 나를 위한 해결책들... 그리고 누군가를 위해서도...
예전에 내가 포스팅해둔 C#에서 Cross Thread 문제를 해결하는 방법을.. 그 후로 5개월 가량 지난 시점에서 내가 다시 만나게 되었다. 그러나.. 나의 이 한심한 기억 용량은 해결책을 이미 지워버린지 오래였다. 난 그 때 내가 그 때의 귀차니즘을 이겨내고 포스팅을 해둔 내가 얼마나 고마웠는지 모른다.

그래서 지금 이렇게 해결책을 다시금 쓴다.

(1) Tools - Option - Directory - Include에 젤 상위부터...
DirectX SDK의 include 경로, Platform SDK의 include 경로, Platform SDK의 Common 경로, Platform SDK의 Baseclass 경로를 추가한다. 그 이후에 원래부터 있던 include 경로들을 써준다. 꼭꼭!
(주: Platform SDK의 Common과 Baseclass의 경로는 Platform SDK의 버젼마다 조금씩 다르겠지만, Samples - Multimedia - DirectShow 아래에 존재한다. 참고로 난 Microsoft Platform SDK for Windows Server 2003 R2 버젼을 사용했다. Windows Server 2003 R2라고 하지만 XP Professional에서도 잘 돌아간다.)

(2) Tools - Option - Directory - Lib에 젤 상위부터...
DirectX SDK의 Lib 경로, Platform SDK의 Lib 경로를 추가해준다.

(3) 추가해야할 Include 파일들...
필히 다음과 같은 순서대로 Include 하자.
atlbase.h, windows.h, dshow.h, strsafe.h, iostream.h : 참고로 이 헤더 파일 순서는 DirectShow Sample들 중 PlayCap을 기준으로 쓴 것이다. 하지만, 대략 위와 같은 순서가 맞다.

(4) 추가해야할 Lib 파일들...
잡다한 것은 지워도 좋다.
하지만 필히 다음과 같은 순서대로.. "strmiids.h, strmbase.lib, ole32.lib, uuid.lib, gdi32.lib"

(5) CoInitializeEX Error 문제는...
Project - Setting - C/C++ - Prepeocessor Definitions에 _WIN32_DCOM를 추가해주면 해결 가능하다.

(6) strmiids.lib(strmiids.obj) : fatal error LNK1103: debugging information corrupt; recompile module
이 문제는 사실 상 6.0에선 해결이 불가능하다고 한다. 뭐 꼼수가 있다고 하는데.. 매우 복잡한 관계로 해결이 힘들고, 이는 Visual Studio 7.0 이상.. (다시말하면 Visual Studio .NET 2003 이상)에선 괜찮다고 한다.

해결방법은.. Release 모드로 하면 된다는 것.. Debugging 하기 힘들다는 단점이 있지만.. 어쩔 수 없지 않은가...-ㅁ-

(7) 추가적인 문제...
Visual Studio 6.0에서 DWORD_PTR, LONG_PTR과 같은 타입을 찾을 수 없다고 나올 때.. 에러나는 헤더 파일을 열어 각각을 DWORD*, LONG* 로 바꾼 후, 저장하면 해결된다.-ㅁ-;;
크리에이티브 커먼즈 라이센스
Creative Commons License

Trackback

Trackback Address :: http://www.nohungry.net/tt1/trackback/84

  1. Subject : 시작부터 난관. DirectX SDK 컴파일 삽질

    Tracked from Sylphid Wave 2007/06/18 02:31 del.

    2007.06.16 #1 DirectShow를 쓰기 위한 윈도 프로그래밍에서 dshow.h를 include하게 되는 데, 이 파일은 DirectX 9.0c SDK에 포함되어 있지 않다. 그걸 모른채 설치한 디렉토리 내의 Include, Lib를 열심히 Visual Stu..

Comments

  1. acaran 2007/05/25 20:36

    학생, 그래도 온종일 프로그래밍으로만 머리를 쓸수 있다는건 행복한 일이네-_-

    난 요즘 프로그래밍 작업만 하고 싶은데, 정작 해야할건 그게 아닌게 더 많아서 괴롭소-_-

    perm. |  mod/del. |  reply.
  2. noname 2007/06/16 02:27

    #1에 대해서 감사합니다. 한참 찾다가 아마 이렇게 된 거 아닌가? 하고 마지막 쇄기를 박으려는 참에 검색하다가 이곳에서 해답을 찾고 갑니다.

    perm. |  mod/del. |  reply.
  3. semi 2007/06/16 16:38

    저 뒷모습 아름답네요...ㅎㅎ

    perm. |  mod/del. |  reply.
    • NOhungry 2007/06/18 15:53

      어라~?ㅎ
      부장님께 해외로 어학연수 갔다는 소식은 들었습니다만..
      어떻게 잘 지내고 계신지 모르겠네요..^^

      날씨도 더운데 건강 조심하시고, 네이티브 스피커가 되시길
      바래요.ㅎ

  4. wafe 2007/06/18 13:40

    트랙백이 잘 안돼서 수동 트랙백입니다. ^^;

    http://wafe.kr/entry/DirectX-SDK-DirectShow-Platform-SDK

    perm. |  mod/del. |  reply.
    • NOhungry 2007/06/18 15:52

      찾아주셔서 감사합니다..^^
      저는 트랙백이 날아가더군요.ㅎ 그래서 날렸습니당.

  5. elkiss 2007/10/10 10:25

    전에 위내용 퍼간사람입니다. 아무말없이 퍼가서 죄송합니다.
    어디에 멘트를 남겨야할지 몰라서요.
    앞으로도 종종들르겠습니다. 좋은내용감사합니다.

    perm. |  mod/del. |  reply.
    • NOhungry 2007/10/10 22:21

      아.. 그 분 이셨구나.

      글 내용은 퍼가는건 괜찮습니다만.. 제 사진이 떠서 깜짝 놀랐었죠. (물론, 얼굴은 나오지 않지만-ㅁ-)

      암튼, 방문해주셔서 감사합니다^^

  6. KID 2007/10/16 20:02

    헛.. 나도 예전에 할땐 잘 됬던거 같은데..
    #1과 같은 이유로.. 완전 우울해하고 있다가.. 검색했는데..-_-;;;
    니 블로그가 나와서 놀랬다..
    암튼 뭐.. 나도 해결했다. 쿠쿡..

    perm. |  mod/del. |  reply.
  7. 마틴 2009/06/13 11:10

    DirectX SDK 관련 검색하다가 우연히 들렀다 갑니다... 라고 답글 쓰려는데,
    위너 테익스 잇 올이라는 블로그 이름이 눈에 띄어,
    히바히바가 예전에 이 이름을 썼었지 하고 있었는데,
    글쓴이가 노헝그리라... 그때까지만해도 참 신기하다고 생각했는데,
    답글들을 보니......

    용민아... 오래간만이다. ^^*

    perm. |  mod/del. |  reply.

What's on your mind?

댓글 입력 폼
[로그인][오픈아이디란?]