Хотя я никогда не связываю библиотеки преднамеренно с разными настройками компилятора, в этом нет особого смысла, но я знаю только классы STL в реализации Dinkumware (которые использует MSFT), чтобы вызвать эту проблему.
Они поддерживают функцию, называемую «отладка итератора», которая по умолчанию включена в конфигурации отладки.Это добавляет членов к классам, чтобы помочь диагностический код.Делая их больше.Это плохо, когда вы создаете объект в куске кода, который был скомпилирован с одним параметром, и передаете его в код, который был скомпилирован с противоположным параметром.Вы можете отключить это, установив для макроса _HAS_ITERATOR_DEBUGGING значение 0. Это довольно большая потеря, эта функция отлично подходит для диагностики ошибок при использовании классов STL.
Передача объектов или указателей между различными библиотеками всегдапроблема, если вы не будете тщательно контролировать настройки компиляции.Смешивание и сопоставление версии и аромата CRT доставляет вам неприятности, когда вы делаете это.Обычно это создает предупреждение от компоновщика, не уверен, что вы сделали, чтобы не видеть его.Там не будет, если код живет в DLL.