In VS2010, C++ project I get this error when linking in x64/Release:
error LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL’: value ‘0’ doesn’t match value ‘1’
All other configuration/platform combinations link just fine. So a static library is built with _ITERATOR_DEBUG_LEVEL set to 0 and the .dll that depends on it somehow has _ITERATOR_DEBUG_LEVEL set to 1. I’m trying to figure out what that means so I can figure out how to turn it off!
The only references to this error that I found while Googling are when _ITERATOR_DEBUG_LEVEL’s conflict with values of 0 and 2. That indicates an attempt to link release with debug. But I’m sure that’s not the case here.
Well, after struggling with this for an hour I figured it out right after I asked the question… for posterity:
Somehow I had _SECURE_SCL defined as a preprocessor definition only in the Release/x64 configuration of my DLL and I had to squint really hard to notice it. Once I removed that definition, the error went away.
Edit: I found this nice lecture/tutorial on msdn that (among other things) explains _ITERATOR_DEBUG_LEVEL. Unfortunately, it does require a fairly recent version of Microsoft Silverlight to watch.