본문 바로가기

IT/Tips

C/C++ MFC 프로그램 배포관련 오류들에 대해서...

 자신이 개발한 프로그램이 다른 컴퓨터에서도 실행하려면 배포관련 컴파일을 해야하는데 대표적으로 

Visual Stduio 2010 프로젝트 속성 -> 정적 라이브러리에서 MFC사용 옵션을 하고 컴파일 했을때 나는 오류인데 메시지는 보통 아래와 같다.

error LNK2001: __imp__wsprintfA 외부 기호를 확인할 수 없습니다.

error LNK2001: __imp__wsprintfA 외부 기호를 확인할 수 없습니다.

error LNK2019: __imp__wvsprintfA@12 외부 기호(참조 위치: "void __cdecl DbgPrintf(char *,...)" (?DbgPrintf@@YAXPADZZ) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__MessageBoxA@16 외부 기호(참조 위치: "int __cdecl JobPatch(unsigned int)" (?JobPatch@@YAHI@Z) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__DispatchMessageA@4 외부 기호(참조 위치: _WinMain@16 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__GetMessageA@16 외부 기호(참조 위치: _WinMain@16 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__LoadAcceleratorsA@8 외부 기호(참조 위치: _WinMain@16 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__LoadStringA@16 외부 기호(참조 위치: _WinMain@16 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__RegisterClassExA@4 외부 기호(참조 위치: "unsigned short __cdecl MyRegisterClass(struct HINSTANCE__ *)" (?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__LoadCursorA@8 외부 기호(참조 위치: "unsigned short __cdecl MyRegisterClass(struct HINSTANCE__ *)" (?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__LoadIconA@8 외부 기호(참조 위치: "unsigned short __cdecl MyRegisterClass(struct HINSTANCE__ *)" (?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__UpdateWindow@4 외부 기호(참조 위치: "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPAUHINSTANCE__@@H@Z) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__ShowWindow@8 외부 기호(참조 위치: "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPAUHINSTANCE__@@H@Z) 함수)에서 확인하지 못했습니다.

error LNK2019: __imp__CreateWindowExA@48 외부 기호(참조 위치: "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPAUHINSTANCE__@@H@Z) 함수)에서 확인하지 못했습니다.


이럴땐 소스코드 맨앞에 해당 함수가 익스포트된 DLL을 전처리 지시자로 선언해주면 해결할수 있다.

예를들면 아래와같다.

#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#pragma comment ( lib , "ws2_32.lib" )
#pragma comment(lib,"Advapi32")