LoadLibrary에서 126 오류가 발생하면 원인이되는 파일 이름을 찾는 방법

오류 126 (ERROR_MOD_NOT_FOUND : 지정된 모듈을 찾을 수 없습니다.)



Loadlibrary에서 DLL을 동적으로 로드할 때 로드 실패입니다. 실패한 파일 이름은 알려주지 않습니다. 로드하고자 하는 DLL 자체를 로드할 수 없다면 이야기는 간단하지만, 대상 DLL이 다른 DLL을 로드하려고 시도하지 못하면 해결에 번거로울 수 있습니다.

방법



LoadLibrary를 사용하지 않고 Lib 파일을 연결하여 DLL을 로드하는 콘솔 응용 프로그램을 만듭니다(암시적 링크). 실행하면 Windows는 응용 프로그램을 시작할 때 DLL을로드하지 못하고 실패를 일으킨 DLL을 표시합니다. DLL에서 DLL을 호출하는 경우를 포함하여 실패한 파일 이름을 알려줍니다.

※이 방법은, 로드하는 DLL의 LIB 파일이 있어 암묵적 링크 할 수 있는 경우만 사용할 수 있습니다.

실시예



아래 예제는 오류를 일으키는 DLL의 함수 "registerDLL"을 호출합니다.

ConsoleApplication1.cpp
#include "stdafx.h"

void __stdcall registerDLL();

int _tmain(int argc, _TCHAR* argv[])
{
    registerDLL();
    return 0;
}

링크할 Lib 파일의 이름과 디렉토리를 링커로 설정하여 암시적 링크로 만듭니다.

실행하면 파일 이름이 작성된 오류 팝업이 표시됩니다.

어라, 이것 디버그 모드인가!

좋은 웹페이지 즐겨찾기