[C++] dll 의존성 검사

C++ 에서 dll을 만들어 사용하거나 다른 언어에서 사용할때 분명히 경로가 올바르고, 코드를 올바르게 구현 하였음에도 불구하고, 아래와 같은 오류 메세지를 뿜는 경우가 있다.

????.dll'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E) 발생

개인적인 생각인데 VC++의 template관련 오류 메세지나 이런걸 볼때, 요즘은 에러 메세지를 보고 원인을 판단하기가 더 힘들다. (그냥 경험이 깡패)

여하튼, 이런 경우는 dll의 의존성모듈중 하나가 빠져 있을 확률이 높다.

이럴때 사용하는게 바로 아래의 툴이다.

http://www.dependencywalker.com/

x86과 x64가 있으니 알아서 받아서 실행하고, 해당 dll을 열면 아래와 같이 빠진 의존성 모듈을 찾아준다.

그림에서 보이듯이, OPENCV_WORLD300.DLL 이 누락되었다고 나온다.