error LNK2005 - uafxcw.lib, LIBCMT.lib
저장소/VC++다음과 같은 문제가 발생.
1>uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)이(가) LIBCMT.lib(new.obj)에 이미 정의되어 있습니다.
1>uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)이(가) LIBCMT.lib(delete.obj)에 이미 정의되어 있습니다.
C Runtime Library와 MFC Library의 import 순서에 의한 링크시 오류라고 한다.
일단 해결 방법은 다음과 같이 하여 import 순서를 변경해주면 되겠다.
프로젝트 속성 -> 링커 -> 입력 -> 특정 기본 라이브러리 무시 : uafxcwd.lib; libcmtd.lib
프로젝트 속성 -> 링커 -> 입력 -> 추가 종속성 : uafxcwd.lib; libcmtd.lib
링크 옵션 /verbose:lib 를 통해 설정 전후의 Library Import 순서를 확인할 수 있다.
설정 전
1> 라이브러리를 검색하고 있습니다.
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\LIBCMTD.lib 검색 중:
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib 검색 중:
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\uafxcwd.lib 검색 중:
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)이(가) LIBCMTD.lib(new.obj)에 이미 정의되어 있습니다.
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)이(가) LIBCMTD.lib(dbgdel.obj)에 이미 정의되어 있습니다.
1> C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\kernel32.lib 검색 중:
...
설정 후
1> 라이브러리를 검색하고 있습니다.
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\uafxcwd.lib 검색 중:
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\libcmtd.lib 검색 중:
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib 검색 중:
1> C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\kernel32.lib 검색 중:
그러하다!
'저장소 > VC++' 카테고리의 다른 글
log4cxx - Visual Studio 빌드 (0) | 2013.03.07 |
---|---|
Visual C++ (2012) 링커 옵션 (0) | 2013.03.07 |
[펌] 링크시 나는 에러 추적 하기 (0) | 2013.03.06 |
CDHtmlDialog, CHtmlView에서 IE 엔진 버전 고르기 (0) | 2013.02.21 |
4K, 64K, 1MB, 1GB, 2GB의 DWORD 표현 (0) | 2013.02.20 |