본문 바로가기

운동하는 개발자/c++

LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL': value ‘0’ doesn’t match value ‘2’

728x90

Visual studio를 사용하여 컴파일을 하다 다음과 같은 메세지를 접하게 되었다

찾아보니 참조하는 lib은 릴리즈로 빌드되어 있는데 메인 프로젝트인 exe는 debug로 빌드하려고 하면 발생한다고 한다

외부에서 가져온 lib이라면 디버그 혹은 릴리즈에 맞는 파일을 가져와서 추가하여 빌드해 주면 해결된다

https://learn.microsoft.com/en-us/cpp/standard-library/iterator-debug-level?view=msvc-170&redirectedfrom=MSDN

 

_ITERATOR_DEBUG_LEVEL

Learn more about: _ITERATOR_DEBUG_LEVEL

learn.microsoft.com

 

나의 경우엔 한 솔루션 내에 여러 개의 프로젝트가 존재했는데 이 중 하나가 output 경로에 lib을 생성 한 뒤 visual studio에 있는 post build 기능을 통해 특정경로로 copy를 시키는데 이때 디버그와 릴리즈를 각각 빌드해서 디버그는 foob.lib,  릴리즈는 foo.lib으로 둘 다 생성하여 copy 하였고 메인 프로젝트는 copy 된 파일을 참조하기에 디버그로는 빌드가 불가능했던 것이었다ㅠㅠ


 

728x90