Microsoft MVP성태의 닷넷 이야기
오류 유형: 79. DLL 'xxxxx.dll'을(를) 로드할 수 없습니다. [링크 복사], [링크+제목 복사],
조회: 57296
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 3개 있습니다.)

DLL 'xxxxx.dll'을(를) 로드할 수 없습니다.


오늘, SignKorea라는 업체의 DLL을 DllImport 특성을 이용해서 연결시켰습니다. 그런데, 제 컴퓨터에서는 이상 없이 실행되었는데 다른 컴퓨터에서는 다음과 같은 오류를 내뱉었습니다.

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


디버그상에서의 상세 오류 로그도 별반 다르지 않습니다.

이 대화 상자 대신 JIT(Just-in-time) 디버깅을 호출하는
방법에 대한 자세한 내용은 이 메시지의 뒷부분을 참조하십시오.

************** 예외 텍스트 **************
System.DllNotFoundException: DLL 'SKCommVB.DLL'을(를) 로드할 수 없습니다.
지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E)
   위치: CommVB_Test.ImportAPI.UnsetMatchedContext()
   위치: CommVB_Test.Form1.Form1_Load(Object sender, EventArgs e) 파일 E:\Work\C#_CommVB\CommVB_Test\Form1.cs:줄 20
   위치: System.Windows.Forms.Form.OnLoad(EventArgs e)
   위치: System.Windows.Forms.Form.OnCreateControl()
   위치: System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   위치: System.Windows.Forms.Control.CreateControl()
   위치: System.Windows.Forms.Control.WmShowWindow(Message& m)
   위치: System.Windows.Forms.Control.WndProc(Message& m)
   위치: System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   위치: System.Windows.Forms.ContainerControl.WndProc(Message& m)
   위치: System.Windows.Forms.Form.WmShowWindow(Message& m)
   위치: System.Windows.Forms.Form.WndProc(Message& m)
   위치: System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   위치: System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   위치: System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

... [이하 생략] ...

어지간히도 헤매게 만들었습니다. 왜냐하면, 분명히 SKCommVB.DLL이 같은 디렉토리에 있다는 것이 확실한데 이와 같은 오류가 나니 그저 황당할 뿐이었는데요. 그러다가 혹시나 싶어서 depends.exe(Dependency Walker)를 이용해서 확인해 보았습니다. 아니나 다를까,,, 다음과 같이 누락된 DLL이 있었습니다.

[그림 1: SKCommVB.dll - 누락된 NSLDAP32V11.dll]
skcommvb_interop_not_found_1.png

"
Error: At least one required implicit or forwarded dependency was not found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
"



모래 시계 표시가 있는 IEShims.dll이야 동적 로드 대상이다 보니 DllImport 특성으로 로드하는 순간에는 상관이 없지만, NSLDAP32V11.dll은 정적 링크된 것이기 때문에 사정이 다르죠. 그 때문에 "Error: At least one required implicit or forwarded dependency was not found."라는 오류 메시지가 있는 것입니다.

원래 정상이라면 아래와 같이 나와야 합니다.

[그림 2: SKCommVB.dll - 정상적으로 로드]
skcommvb_interop_not_found_2.png

암튼,,, 이것을 통해서 배운 시행착오라면. "DllImport" 특성이 적용된 API 실행 시 "DLL 'xxxxx.dll'을(를) 로드할 수 없습니다."와 같은 오류가 발생한다면 그것의 참조 DLL도 함께 조사해야 한다는 것!!!

그나저나, SignKorea 측에서는 이를 모르고 있을까요? 새로 설치된 "Clean PC"에서는 "NSLDAP32V11.DLL"로 인한 문제가 발생할 텐데...



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/23/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2014-11-10 06시42분
[YCPark] 좋은 정보 감사합니다 :D
덕분에 문제 해결하고 가네요
[guest]

... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...
NoWriterDateCnt.TitleFile(s)
1761정성태9/29/201423064.NET Framework: 466. 윈도우 운영체제의 보안 그룹 이름 및 설명 문자열을 바꾸는 방법파일 다운로드1
1760정성태9/28/201421067.NET Framework: 465. ICorProfilerInfo::GetILToNativeMapping 메서드가 0x80131358을 반환하는 경우
1759정성태9/27/201432457개발 환경 구성: 240. Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법파일 다운로드1
1758정성태9/23/201438976개발 환경 구성: 239. 원격 데스크톱 접속(RDP)을 기존의 콘솔 모드처럼 사용하는 방법 [1]
1757정성태9/23/201419623오류 유형: 242. Lync로 모임 참여 시 소리만 들리지 않는 경우 - 두 번째 이야기
1756정성태9/23/201428726기타: 48. NVidia 제품의 과다한 디스크 사용 [2]
1755정성태9/22/201435540오류 유형: 241. Unity Web Player를 설치해도 여전히 설치하라는 화면이 나오는 경우 [4]
1754정성태9/22/201425907VC++: 80. 내 컴퓨터에서 C++ AMP 코드가 실행이 될까요? [1]
1753정성태9/22/201421695오류 유형: 240. Lync로 세미나 참여 시 소리만 들리지 않는 경우 [1]
1752정성태9/21/201441816Windows: 100. 윈도우 8 - RDP 연결을 이용해 VNC처럼 사용자 로그온 화면을 공유하는 방법 [5]
1751정성태9/20/201439951.NET Framework: 464. 프로세스 간 통신 시 소켓 필요 없이 간단하게 Pipe를 열어 통신하는 방법 [1]파일 다운로드1
1750정성태9/20/201425154.NET Framework: 463. PInvoke 호출을 이용한 비동기 파일 작업파일 다운로드1
1749정성태9/20/201424927.NET Framework: 462. 커널 객체를 위한 null DACL 생성 방법파일 다운로드1
1748정성태9/19/201426451개발 환경 구성: 238. [Synergy] 여러 컴퓨터에서 키보드, 마우스 공유
1747정성태9/19/201429771오류 유형: 239. psexec 실행 오류 - The system cannot find the file specified.
1746정성태9/18/201426721.NET Framework: 461. .NET EXE 파일을 닷넷 프레임워크 버전에 상관없이 실행할 수 있을까요? - 두 번째 이야기 [6]파일 다운로드1
1745정성태9/17/201424236개발 환경 구성: 237. 리눅스 Integration Services 버전 업그레이드 하는 방법 [1]
1744정성태9/17/201432143.NET Framework: 460. GetTickCount / GetTickCount64와 0x7FFE0000 주솟값 [4]파일 다운로드1
1743정성태9/16/201421928오류 유형: 238. 설치 오류 - Failed to get size of pseudo bundle
1742정성태8/27/201428252개발 환경 구성: 236. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법 [2]
1741정성태8/26/201422381.NET Framework: 459. GetModuleHandleEx로 알아보는 .NET 메서드의 DLL 모듈 관계파일 다운로드1
1740정성태8/25/201433774.NET Framework: 458. 닷넷 GC가 순환 참조를 해제할 수 있을까요? [2]파일 다운로드1
1739정성태8/24/201427638.NET Framework: 457. 교착상태(Dead-lock) 해결 방법 - Lock Leveling [2]파일 다운로드1
1738정성태8/23/201423308.NET Framework: 456. C# - CAS를 이용한 Lock 래퍼 클래스파일 다운로드1
1737정성태8/20/201420759VS.NET IDE: 93. Visual Studio 2013 동기화 문제
1736정성태8/19/201426771VC++: 79. [부연] CAS Lock 알고리즘은 과연 빠른가? [2]파일 다운로드1
... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...