System.DllNotFoundException 에러 처리

[문제]

gpc64.dll을 이용한 프로그램을 다른 컴퓨터에서 실행했더니, 제목과 같은 에러 메시지가 발생했다.

실행시켰을 때의 에러 메시지
디버깅했을 때의 에러 메시지

[환경]

Windows 10 x64, Visual Studio 2019

[System.DllNotFoundExceoption 에러 원인]

원인1. 문제의 에러 메시지는 gpc64.dll 파일이 없기 때문에 표시된다.

-> 그런데 해당 폴더에 dll 파일이 존재할 때도 에러가 발생할 수 있다.

원인2. 이 때, 해당 dll(여기서는 gpc64.dll)이 의존하고 있는 dll이 없어도 똑같은 에러가 발생한다.

-> 해당 dll에 의존하는 모든 dll이 설치되지 않았기 때문에 이런 에러가 발생한다.

[해법]

depends.exe(Dependency Walker)를 이용해서 누락된 DLL을 확인할 줄 알았는데, 이를 계승한 새 프로그램(Download here)으로 확인하였다.

확인한 결과, 나의 경우 C++재배포가능패키지가 없었다. 그래서 다음 링크에서 재배포가능패키지를 설치한다.

Install Microsoft Visual C++ 2019 Redistributable Package on the user’s machine

https://support.microsoft.com/ko-kr/help/2977003/the-latest-supported-visual-c-downloads

[교훈]

DLL을 사용할 때, 의존성 여부도 확인해야 한다.

[참고 사이트]

https://www.sysnet.pe.kr/2/0/713

https://stackoverflow.com/questions/14587775/system-dllnotfoundexception-unable-to-load-dll-no-errors-in-dev-machine-but-er