Windows/MFC

MFC 디버그 모드 컴파일에러 해결 (LIBCMT.lib(invarg.obj) : error LNK2005:)

Ohjeonghak 2013. 10. 16. 22:14
반응형

 MFC를 디버그 모드로 컴파일 하거나 릴리즈 모드로 컴파일 할때는 서로 다른 라이브러리를 참조한다.

릴리즈용 라이브러리는 그냥 평범한 이름이지만

디버그용 라이브러리는 보통 릴리즈용 라이브러리 파일의 이름 뒤에 d 가 붙은 이름으로 되어 있다.

 

아래 그림과 같이 디버그로 컴파일 했을때  릴리즈로 컴파일했을때는 잘 되었는데 또는 디버그로 컴파일 했을때 잘 되었는데.. 반대인 경우로 컴파일 하면 에러가 나는 경우를 볼 수 있다.

 

 

 

 

 

에러 내용들은 아마도 이런 내용들과 유사 할 거다.

 

 

 

 

 

 

해결방법은 컴파일될때 잘못 참조 되고 있는 라이브러리를 정상적으로 참조 될 수 있도록 라이브러리를 바꿔 주면 된다.

우선 아래의 그림과 같이 프로젝트 오른쪽 키를 눌러 속성을 클릭한다.

 

 

 

 

 

" 구성(C): " 이부분을 컴파일 하면 에러나는 모드 "Debug" 또는 "Relese"로 바꿔주고

"구성속성 > C/C++ > 코드 생성" 에서 "런타임 라이브러리"가

 

Debug 모드일때

다중 스레드 (/MT) 로 되어 있다면 -> 다중 스레드 디버그 (/MTd) 또는

다중 스레드 DLL (/MD) 로 되어 있다면 -> 다중 스레드 디버그 DLL (/MDd) 로 바꿔주고

 

Relese 모드일때는 위와 반대로

다중 스레드 디버그 (/MTd) 로 되어 있다면 -> 다중 스레드 (/MT) 또는

다중 스레드 디버그 DLL (/MDd) 로 되어 있다면 -> 다중 스레드 DLL (/MD) 로 바꿔주고

 

 

 

적용 하여 컴파일 하면 해결된다.

 

 

반응형

'Windows > MFC' 카테고리의 다른 글

MFC 기반 프로그램 배포 (dll)문제 해결  (0) 2013.09.06
02. MFC 프로그래밍의 기초  (0) 2013.06.19
01. 윈도우 프로그래밍의 이해  (0) 2013.06.18