LNK2038, ошибка несоответствия итератора, необходимо игнорировать

Я получаю ошибку компоновщика LNK2038 при попытке преобразовать проект VS2008 в VS2010. Эта ошибка возникает, когда компилируются два разных проекта, в которых один использует макрос препроцессора _DEBUG, а другой - нет. По сути, у меня есть сторонняя библиотека, которая имеет только релиз .libs, поэтому, когда я пытаюсь использовать эту библиотеку при сборке проекта в режиме отладки, я получаю это несоответствие.

Я понимаю, почему Microsoft выдает эту ошибку (безопасность итератора STL), однако наш проект не использует STL Microsoft, мы используем STLPort, поэтому эта ошибка ничего не значит для нашего проекта. Мне просто нужен способ, чтобы помешать этой проверке.

Внутри STL есть файл с именем yvals.h, в который входит определение #pragma detect_mismatch для различных настроек _ITERATOR_DEBUG_LEVEL. Этот набор определений обернут в #ifndef _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH, #endif. Однако даже если я определю _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH в качестве макроса препроцессора для всего моего проекта, я все равно получаю ту же ошибку компоновщика. Я могу даже изменить yvals.h, чтобы определить этот макрос, и он ничего не делает (я предполагаю, потому что сам STL нужно будет перекомпилировать).

Итак, мой вопрос в основном, какие шаги я могу предпринять, чтобы _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH фактически работал так, как задумано, чтобы мой проект нигде не делал эту проверку при компиляции в VS2010?

РЕДАКТИРОВАТЬ: я знаю, что это поздний ответ, но я только что нашел этот пост и понял, что не опубликовал решение. Как уже упоминалось, в библиотеках было несоответствие. Оказывается, VS2010 меняет каталоги по умолчанию для определенных проектов (я нашел поток на MSDN в один момент, полный жалоб на это), и это изменение каталога заставило VS2010 искать в неправильном каталоге библиотеку отладки, и это было вместо этого найти библиотеку релизов.

Ответы на вопрос(1)

Ваш ответ на вопрос