LNK2005: already defined in LIBCMT.lib(new.obj)

Programming/Code 2011.01.04 댓글 Joshua95
에러 내용: error LNK2005: already defined in LIBCMT.lib(new.obj)  
 
현상 : MFC 라이브러리를 static하게 링킹할때 오류 발생

오류 : nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)

해결 방법 : 라이브러리를 올바른 순서로 강제링킹하도록 설정한다.

* 아래 방법은 VS 6.0 기준입니다. VS 2008은 약간 명칭이 다름!
 <링커가 올바른 순서로 라이브러리를 강제 링크하는 방법>
1. Project 메뉴에서 Settings을 눌러 Project Settings 대화 상자를 엽니다. 
2. Settings For 뷰에서 링크 오류가 발생하는 프로젝트 구성을 선택(강조 표시)합니다. 
3. Link 탭을 누릅니다. 
4. Category 콤보 상자에서 INPUT을 선택합니다. 
5. Ignore Libraries 입력란에 라이브러리 이름(예: Nafxcwd.lib Libcmtd.lib)을 입력합니다. 

참고: 링커 명령줄은 /NOD:<library name>과 동일합니다. 
6. Object/library Modules 입력란에 라이브러리 이름을 입력합니다. 이 이름은 반드시 해당 행의 처음 두 라이브러리(예: Nafxcwd.lib Libcmtd.lib)와 같은 순서대로 나열되어야 합니다. 

참고 : http://support.microsoft.com/kb/q148652/

- 2006/10/12 Joshua95 (최초 기록),
- 2011/01/04 Joshua95 (티스토리 이전 후 다시 등록)

댓글