Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does _ITERATOR_DEBUG_LEVEL = 1 mean?

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.

like image 816
Skrymsli Avatar asked Nov 09 '10 02:11

Skrymsli


3 Answers

Well, after struggling with this for an hour I figured it out right after I asked the question... for posterity:

_ITERATOR_DEBUG_LEVEL = 0 (in release mode)
_ITERATOR_DEBUG_LEVEL = 1 (in release mode if _SECURE_SCL is defined)
_ITERATOR_DEBUG_LEVEL = 2 (in debug mode)

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.

like image 137
Skrymsli Avatar answered Nov 19 '22 00:11

Skrymsli


For those with immaculate preprocessor definitions, yet still suffering from this error, check the project's runtime library setting.

If set to either one of the debug versions, _ITERATOR_DEBUG_LEVEL will get set to 2.

like image 29
Paul Skibitzke Avatar answered Nov 19 '22 01:11

Paul Skibitzke


I ran into this problem on a release build, but I found that my preprocessor was defining _DEBUG when it should have been NDEBUG. Changing to NDEBUG fixed the problem.

like image 2
Paladine Avatar answered Nov 19 '22 00:11

Paladine