Linker error LNK2038: mismatch detected in Release mode

62,211

Solution 1

Your app is being compiled in release mode, but you're linking against the debug version of PCRE, which had /MTd (or similar) set, thus causing the mismatch in iterator debugging level in the CRT.

Recompile PCRE in release mode to match your own application.

The detect_mismatch pragma in VS 2010 is what causes this error to be emitted.

See http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (search for _ITERATOR_DEBUG_LEVEL)

Solution 2

I had the same error. In my case the solution is easy: I had one project A depending on another project B. B had a preprocessor definition _DEBUG in debug mode and A didn't.

Just add _DEBUG to project A(project->properties->c++->preprocessor->preprocessor definitions) and you're done.

Solution 3

This can also be caused by setting the preprocessor definition _HAS_ITERATOR_DEBUGGING=0 in project B and not in A where A produces a lib used by B.

Solution 4

My problem was that dependent project used "Use Multi-Byte Character Set"
under Generl-->Character set. while other project had "No Set" value

Share:
62,211

Related videos on Youtube

Wartin
Author by

Wartin

Updated on July 09, 2022

Comments

  • Wartin
    Wartin almost 2 years

    I am trying to port a small app of mine from Win XP and VS 2005 to Win 7 and VS 2010.

    The app compiles and runs smoothly in Debug mode, however in Release mode I get the following error:

    pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for 
    '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj
    

    Where should I start checking?

    • BobbyShaftoe
      BobbyShaftoe over 13 years
      Have you don a "clean" first?
    • Karim Agha
      Karim Agha over 12 years
      This happens when some of your projects are being compiled in Debug mode and some in Release. Make sure that all of them are in the same mode.
    • Mark Storer
      Mark Storer about 5 years
      Incidentally, I did a clean build and it DID fix the problem, so if some passing reader hasn't yet: Give it a shot.
  • Derek
    Derek almost 12 years
    Thank you! Or in release mode you might have NDEBUG defined in one and not the other.
  • Tomáš Zato
    Tomáš Zato over 5 years
    What if the problematic lib is a 3rd party software?