Я только что переместил решение Visual Studio (С++) на другой компьютер, установил все каталоги и настройки, насколько я могу судить, и сделал чистую/перестроенную версию. Я получаю ошибку выше на связке .obj при компиляции, не уверен, что с этим делать.
Значение _iterator_debug_level '0' не соответствует значению '2'
Ответ 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 в решении и комментируйте их