IT정보공유

참조 DLL 찾아주는 Dependency Walker 사용법

알지오™ 2019. 10. 18.

소프트웨어 개발을 하다 보면 개발 PC에서는 잘 동작하지만
다른 PC에서 동작이 안되는 경우가 발생합니다.

이럴 때는 보통 exe 파일이 참조하고 있는 dll 파일들이 함께 복사가 되어야 하는데
그렇지 못한 상황일 확률이 큽니다.

윈도우즈 OS에서 구동되는 exe 실행파일들은 대부분 Windows SDK에서 제공되는 dll들을 참조하여 
실행이 됩니다. 또는 필요에 의해 만들어진 dll을 참조하기도 하고요.

예를 들어 ABC.exe 라는 실행파일이 dependency.dll 이라는 dll을 참조하여 사용할 경우
abc.exe 파일이 위차한 폴더에 dependency.dll 파일이 함께 있어야 
프로그램이 정상적인 동작을 할 수 있다는 소리입니다.
아니면 windows\system32 등의 시스템폴더 등에 해당 dll 파일이 있어야 하고요.
(사용자가 별도로 만든 DLL이 아니라면 재배포 패키지 등에 속한 DLL 일 확률이 높습니다.)


그런데 이 DLL이 실행파일과 같은 폴더에 있다면 
다른 PC에 복사할 때 함께 복사를 할 테니 문제가 생기지 않는데 system32에 있는 경우
거의 dll 파일을 빼먹고 복사할 확률이 높아집니다.

어쨌든 이렇게 누락된 dll이 있을 경우 응용프로그램은 dll 오류 메세지가 발생하거나
아무런 메세지 없이 종료되기도 합니다.

어떤 DLL 파일이 누락되어 프로그램이 정상적으로 실행되지 않는지 
Dependency Walker 프로그램을 이용하여 찾아봅시다.



디펜던시워커(Dependency Walker) 실행

처음에 디펜던시 워커를 실행하면 이렇게 아무것도 나오지 않습니다.



디펜던시워커 파일 오픈

참조하고 있는 DLL 을 찾기 위해 문제가 되는 응용프로그램의 실행파일 또는 dll 파일을 오픈합니다.

exe 실행파일 또는 dll 등의 파일을 선택해 주면 됩니다. 

보통은 exe 파일 이겠죠?

 

디펜던시워커 문제 발견

Error Opening file. 지정된 파일을 찾을 수 없습니다.

이렇게 실행파일이 어떤 DLL을 참조 하고 있는지, 
그리고 그 DLL 중 어떤 DLL이 누락 되어 있는지 Dependency Walker를 이용하면 알아낼 수 있습니다.
없는 DLL을 찾아서 복사해 주면 됩니다.

 

디펜던시 워커 다운로드

 

Dependency Walker (depends.exe) Home Page

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 modul

www.dependencywalker.com

 

일반적인 경우에는 Visual Studio Visual C++ 재배포 가능 패키지를 설치해 주면
해결되는 경우가 많습니다.

만약 그래도 안되면  아래 링크를 참고하셔서 런타임 오류에 관한 
모든 런타임 라이브러리 패키지를 한방에 설치하는 방법도 고려해보시는게 좋습니다.

DLL 오류 한방에 해결 방법

 

프로그램 실행이 안될때, DLL 오류 한방에 해결

컴퓨터에 프로그램을 설치하거나, 내 PC에서 잘 돌아가던 프로그램을 다른 컴퓨터로 복사해서 실행하니D...

blog.naver.com

 

댓글

💲 추천 글