Значение _iterator_debug_level '0' не соответствует значению '2' - PullRequest
38 голосов
/ 02 ноября 2010

Я только что переместил решение Visual Studio (C ++) на другой компьютер, установил все каталоги и настройки, насколько я вижу, и выполнил чистку / перестройку решения. Я получаю сообщение об ошибке выше на куче .obj при компиляции, не знаю, что с этим делать.

Ответы [ 5 ]

29 голосов
/ 02 ноября 2010

Кажется, вы смешиваете объектные файлы, созданные с разными настройками. Попробуйте выполнить полную чистую перестройку и проверьте все параметры файла проекта, чтобы убедиться, что макрос _ITERATOR_DEBUG_LEVEL одинаков (например, вы не смешиваете отладочные и выпускаемые объекты).

17 голосов
/ 20 октября 2011

Смешивание двоичных файлов (объектных файлов) является одной из причин;другое (с которым я столкнулся) - неверное определение макроса _DEBUG в сборке выпуска._DEBUG не является стандартным макросом, но используется Microsoft.

После редактирования файла .vcxproj в Emacs я набрал _DEBUG вместо NDEBUG для выпуска и обнаружил точно такую ​​же ошибку сборки.

16 голосов
/ 13 июля 2014

В некоторых случаях смешивание параметров в

Свойства> Свойства конфигурации> C / C ++> Генерация кода> Время выполнения Библиотека

Между включены библиотеки (ы) и работающий в данный момент проект может вызвать эту проблему.

В зависимости от использования установите его равным /MD или /MT или /MDd или /MTd для всех проектов.

1 голос
/ 03 августа 2017

Я пытался решить эту проблему в течение пяти дней.Код Point Cloud Library (PCL) успешно создается в режиме отладки, но не работает в режиме выпуска.

Я несколько раз перенастраивал библиотеку, но это не помогло.Я обнаружил, что проблема заключалась в том, что версия выпуска наследовала _DEBUG, поэтому я снял флажок в свойствах проекта >> Препроцессор >> Определения процессора, и она была решена.

0 голосов
/ 20 апреля 2017

Я обнаружил (странно), что _CRT_NON_CONFORMING_SWPRINTFS вызывает его. Когда я его удаляю, я не получаю «значение _iterator_debug_level« 0 »не соответствует значению« 2 »», а вместо этого следующее предупреждение:

Ошибка 6, ошибка C4996: '_swprintf': swprintf был изменен в соответствии со стандартом ISO C, добавив дополнительный параметр подсчета символов. Чтобы использовать традиционный Microsoft swprintf, установите _CRT_NON_CONFORMING_SWPRINTFS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...