Подтвердить что ты не робот

Значение _iterator_debug_level '0' не соответствует значению '2'

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

Ищите _iterator_debug_level 0 в решении и комментируйте их