Могу ли я связать проект с другим _ITERATOR_DEBUG_LEVEL, чем библиотеки, которые я использую? - PullRequest
0 голосов
/ 14 октября 2018

Мне нужно отладить программу, которая обрабатывает много данных.Объем данных не может быть уменьшен - проблема, которую я ищу, возникает только для определенного набора данных.

Из-за объема обрабатываемых данных _ITERATOR_DEBUG_LEVEL начинает вызывать проблемы - при отладкеПрограмма настолько медленная, что никогда не завершается.Поэтому я установил _ITERATOR_DEBUG_LEVEL=0 и перекомпилировал проект.

Однако после перекомпиляции проекта он не совместим с библиотеками отладки.Я получаю эту ошибку.

1>libboost_program_options-vc100-mt-gd-1_55.lib(options_description.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in ADProvider.obj

Мой вопрос: возможно ли игнорировать эту ошибку и связать проект независимо?Пока это работает, меня не волнуют возможные последствия.Мне действительно нужно отладить проблему.

1 Ответ

0 голосов
/ 14 октября 2018

Причиной существования различных готовых библиотек Boost является то, что они не являются двоично-совместимыми.Другими словами, объект типа foo может иметь разную компоновку в памяти в зависимости от этих настроек, например, другой размер.По этой причине смешивание невозможно.

Теперь вы можете скомпилировать вариант без дополнительной диагностики (т.е. без отладки итератора, которая должна отлавливать несколько случаев неопределенного поведения), но с символами отладки., так что вы можете пройти через код.Я не уверен в текущем состоянии, но в последний раз я смотрел, что их не было среди тех библиотек Boost, которые предварительно собраны по умолчанию.

...