Вопрос о связывании Visual Studio C++ 2008

В моем проекте есть куча решений, содержащих несколько проектов. Есть 2 конфигурации:

  • Выпуск (/МТ)
  • Отладка (/MTd)

У нас есть сторонняя библиотека. Должны ли у нас быть 2 версии для каждой конфигурации (релизная версия, скомпилированная с помощью /MT, и отладочная версия, скомпилированная с помощью /MTd), или достаточно иметь одну версию (/MT или /MTd)?

Спасибо Дима


person dimba    schedule 26.07.2009    source источник


Ответы (1)


В общем, вам также нужно иметь две версии этой внешней библиотеки и постоянно компилировать все для отладки или для выпуска. Проблема в том, что смешивание разных сред выполнения C (CRT, например CRT отладки и выпуска) может привести к сбоям.

Есть одно исключение, когда вы можете обойтись только версией выпуска: если внешняя библиотека является DLL, и если вы не передаете какие-либо объекты CRT из одной CRT в другую, ограничение не применяется.

Объекты CRT — это указатели FILE, блоки malloc (только если одна библиотека выделяет, а другая освобождает), понятие текущей локали и понятие часового пояса.

person Martin v. Löwis    schedule 26.07.2009