인프런 커뮤니티 질문&답변

shhmun02님의 프로필 이미지
shhmun02

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

텍스처와 UV

LoadFromWICFile() 함수를 쓰는데 LNK2038에러가 뜨는데 이유를 모르겠습니다

작성

·

380

0

인터넷에 찾아보니 구성 속성" > "C/C++" > "코드 생성" > "런타임 라이브러리 를 /MT 나 /MD 로 맞춰주라고 해서 맞추기도 해봤는데 계속

심각도	코드	설명	프로젝트	파일	줄	비표시 오류(Suppression) 상태	세부 정보
오류	LNK2038	'_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '0' 값이 '2'(Game.obj에 위치) 값과 일치하지 않습니다.	가메코딩	C:\Users\shhmu\Desktop\GameCoding_tmp\가메코딩\DirectXTex.lib(DirectXTexImage.obj)	1		
		
심각도	코드	설명	프로젝트	파일	줄	비표시 오류(Suppression) 상태	세부 정보
오류	LNK2038	'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MD_DynamicRelease' 값이 'MTd_StaticDebug'(Game.obj에 위치) 값과 일치하지 않습니다.	가메코딩	C:\Users\shhmu\Desktop\GameCoding_tmp\가메코딩\DirectXTex.lib(DirectXTexImage.obj)	1		

이런 에러가 나타나는데 어떻게 해야 할까요??

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

shhmun02님, 문제를 겪고 계신 부분에 대하여 설명 드리겠습니다. LNK2038 에러는 프로젝트 내의 서로 다른 객체 파일들이 불일치하는 런타임 라이브러리 설정을 사용하여 컴파일되었을 때 발생합니다. 여기서는 ‘_ITERATOR_DEBUG_LEVEL’과 ‘RuntimeLibrary’ 설정이 불일치하고 있음을 나타냅니다.

  1. ’_ITERATOR_DEBUG_LEVEL’ 오류는 디버그 모드와 릴리즈 모드에서 C++ 표준 라이브러리 컨테이너들의 디버그 기능 지원 수준이 서로 다르기 때문에 발생합니다. 이 값을 동일하게 맞춰주어야 하는데, 일반적으로 디버그 모드에서는 ‘_ITERATOR_DEBUG_LEVEL’이 2가 되고, 릴리즈 모드에서는 0이 됩니다. 프로젝트의 모든 부분이 동일한 설정으로 컴파일되었는지 확인해보세요.

  2. ‘RuntimeLibrary’ 오류는 프로젝트에 포함된 파일들이 서로 다른 런타임 라이브러리 설정(MT, MD, MTd, MDd 등)을 사용하여 컴파일되었음을 나타냅니다. 여기서 ‘MD_DynamicRelease’는 동적 런타임 라이브러리를 사용하는 릴리즈 모드를, ‘MTd_StaticDebug’는 정적 런타임 라이브러리를 사용하는 디버그 모드를 의미합니다. 프로젝트의 모든 구성 요소가 같은 런타임 라이브러리를 사용하도록 설정을 일치시켜야 합니다.

해결 방법으로는 프로젝트 속성에서 “구성 속성” > “C/C++” > “코드 생성” > “런타임 라이브러리”를 확인하시고, 프로젝트 전체가 동일한 설정(모두 /MT, /MTd, /MD 혹은 /MDd 중 하나로)을 사용하고 있는지 확인해 주세요. 라이브러리와의 불일치도 확인해야 하며, 필요하다면 라이브러리를 재컴파일하거나 적절한 버전을 사용해야 할 수도 있습니다.

부디 이 정보가 shhmun02님의 문제 해결에 도움이 되길 바랍니다.

shhmun02님의 프로필 이미지
shhmun02

작성한 질문수

질문하기