C#에서 [DLL ''에서 이름이 ''인 진입점을 찾을 수 없습니다.] 오류에 대해 해결하는 방법에 대해 알아보도록 합시다. 발생하였던 문제를 모두 해결하며 정리했던 것이라 본문을 읽어보시면 웬만하면 해결 가능하실 것입니다. 😘 목차는 다음과 같습니다.
- 오타에 의한 실수
- DLL 버전이 달라서 해당 진입점이 없는 경우
- 64비트, 32비트(x86) DLL이 별도로 구성되는데, 이름이 동일하게 제공된 경우
- 해당 DLL에서 필수로 참조하는 또 다른 DLL 이 누락되어 있을 때, 예외처리가 부족한 경우
제가 현재까지 마주했던 문제유형을 크게 4가지로 분류해보았습니다.
하나하나 점검해 보았을 때 모두 해결했던 것으로 기억하는데,
이것 이외에도 발견하는 경우가 있고, 이 글이 생각난다면 추가하겠습니다~
오타에 의한 실수
개발자도 사람이다보니 실수로 오타를 입력하여 개발하는 경우가 있죠.
철자를 제대로 적으셨는지 다시 한 번 확인해 주세요.
DLL 버전이 달라서 해당 진입점이 없는 경우
DLL 버전이 여러 개인 경우, 예상하지 않은 구/신 버전을 사용하여 진입점을 찾을 수 없는 문제가 발생하는 경우가 있습니다.
DLL 우클릭 > 속성 > 자세히 > 파일 버전, 제품 버전, 크기가 원하는 것이 맞는지 확인해 주세요.
64비트, 32비트(x86) DLL이 별도로 구성되는데, 이름이 동일하게 제공된 경우
보통 DLL 이 64비트, 32비트 버전이 구분이 되면 64비트는 dllName.dll, 32비트는 dllName(x86).dll 또는 dllName(32).dll 이 개발되리라 예상합니다.
그런데 가끔 보면 64비트/32비트 DLL이 동일한 명칭으로 개발되는 경우가 있습니다.
이러한 경우, 32비트가 필요한데 문제기기에서 64비트가 설치되어 있는 것이 아닌지 확인해 주세요.
해당 DLL에서 필수로 참조하는 또 다른 DLL 이 누락되어 있을 때, 예외처리가 부족한 경우
예를 들어 a.DLL 내부에서 b.DLL 을 참조하도록 개발이 되었으며, a.DLL 과 b.DLL 은 같은 경로에 있어야 한다고 가정합시다. b.DLL 이 누락이 되어 있을 때 예외가 발생할 텐데, 예외처리가 정상적으로 되지 않았을 때 간혹 a.DLL 의 진입점을 찾을 수 없다는 오류가 발생합니다. (항상 그런 건 아니고, 이러한 현상을 제가 1번 겪었습니다.)