[본문 참조]
Dependency Walker is a free utility that scans any 32-bit or 64-bit
Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical
tree diagram of all dependent modules. For each module found, it lists
all the functions that are exported by that module, and which of those
functions are actually being called by other modules. Another view
displays the minimum set of required files, along with detailed
information about each file including a full path to the file, base
address, version numbers, machine type, debug information, and more. (생략)
Dependency
Walker 는 해당 프로그램의 각종 모듈 참조를 가르켜 줍니다. 또한 참조한 모듈의 사용하는 함수 이름까지 알 수 있는
유틸로써, 프로그램 배포시에 한 번 쯤은 확인해볼 필요가 있는 유용한 유틸입니다. (프로그래머 입장에서는 오히려 너무 강력한
기능덕에 자신의 프로그램이 쉽게 노출되는 허무함을 맞볼 수 있습니다.) 간혹 사용하는 DLL 을 빼놓고 배포하는 경우가
있다보니, 이러한 유틸로 빠지는 DLL 이 없도록 꼭 확인하는 것이 좋겠습니다.
위의 공식 사이트에서 해당 프로그램을 무료로 다운로드 받을 수 있습니다.
※
추가로 가끔 상용 프로그램이나 배포되는 프로그램에서 디버그용 DLL 파일들을 요구하거나 함께 배포하는 일이 있는데, MS 에서
공식적으로 불허 하고 있다는 사실을 아시고 계셨으면 좋겠습니다. (요새는 조금 나아진 편이지만, 예전에는 제법 비일비재
했습니다.) 주로 MFC 나 DX 관련 프로젝트에 Debug 용으로 배포할 시 많이 발생하는 실수 입니다. 관련 참고 사이트는 http://msdn.microsoft.com/ko-kr/library/8kche8ah(VS.80).aspx 이며, 일반적으로 명칭 뒤에 'd' 가 붙는 파일들이 디버그용 DLL 입니다. 이러한 파일들은 재배포될 수 없으며, 위의 링크에서도 확인이 가능합니다.
쉽게 이야기해서 프로그래밍이 사용한 DLL 정보와 DLL에 들어있는 함수 중 사용한 함수를 보여주는 툴 (오~)
<?xml:namespace
prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace
prefix = v /><?xml:namespace prefix = v /><?xml:namespace
prefix = v />
1- 프로그램위치 (VS 2005기준) – 편하게 아래쪽 그림 참고
2- 그럼 실행해보자 ^0^
(1) 연결된 DLL정보를 볼 프로그래밍을 선택하기 위해아래 아이콘을 클릭한다.
(2) 연결된 DLL 정보를 볼 프로그래밍을 선택한다
< 참고로 난 안사람은 안다는 저 흐뭇한 게임의 속을 보려고 한다 *ㅡ_ ㅡ*(개인적취향에 존중을)>
자! 프로그래밍을 선택하고 열기를 누르자!
(3) 나온 화면
잠시 아래 Warning은 무시하자.. 그냥 대충 보니 뭔가 미확인 DLL때문에 빠진 함수가 있다는
말인 것 같다.. 참고로 난 영어 못한다. 그래서 틀린 해석일 수도 있다는 점 밝힌다. ㅡㅡㅋ;
(4) 자 사용된 DLL과 그 DLL에서 사용된 함수를 봐보자!
딱 보니 이 흐뭇한 게임에 사용된 DX9 버전은 9_32 버전이라는 점과 함께 D3DXCreateEffect 사용된것 봐서 쉐이더 HLSL를 사용했다는 것이 보이군요 후후후
(5) 자 그럼 내 프로그래밍에서 사용된DLL는 어디에?
파란색 네모에 있는 아이콘을 누르면 바로 DLL 있는 FullPaths 가 표시 된다.
(6) 기타
* 이외에도 여러 기능들이 있는 것 같으니 직접 한번 해보시길
* 이 Dependency Walker에 아쉬운점은 바로 아까 무시한 워닝을 출력하게 한 것처럼
MS나 공식적인 DLL가 아닌 사용자가 만든 DLL (ex, 게임엔진의 DLL)는 표씨 하지 않는다는 점이다. (어떻게 생각해보면 당연한 것 일수도 있다.)
(7) 끝으로 프로그램을 배포할 때 무슨 DLL이 사용되었고 어떤 DLL를 포함해야 할지 이 프로그램으로 먼저 파악하고