Нужно ли мне иметь две разные `.lib` библиотеки - для отладки и выпуска?

Я сделал .lib файл для отладки и сборки release. Ранее я использовал отладочную версию в проекте, но когда я переключился на релизную, возникла ошибка с сообщением о неправильной версии библиотеки времени выполнения (runtime library). Однако, почему при использовании сторонней библиотеки, например SDL2, такой проблемы не возникает? SDL2 работает как в отладочной, так и в релизной версии без ошибок.
  • 20 декабря 2023 г. 11:57
Ответы на вопрос 2
Да, обычно рекомендуется иметь отдельные `.lib` файлы для отладки и выпуска.

Ошибки с неправильной версией библиотеки времени выполнения (runtime library) могут возникать, когда разработчик собирает программу с использованием одной версии библиотеки, а другая версия библиотеки находится на компьютере пользователя. Существует две основные версии библиотеки времени выполнения: отладочная (`Debug`) и релизная (`Release`). Эти версии различаются в ряде аспектов, включая способ работы с памятью и обработку ошибок. 

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

SDL2 - это сторонняя библиотека, которая предоставляется разработчиками собственными `.lib` файлами для разных видов сборок (отладочной и релизной). Они выпускают обе версии библиотеки, чтобы избежать подобных проблем с неправильной версией библиотеки времени выполнения.

Поэтому, чтобы избежать ошибок с неправильной версией библиотеки времени выполнения, рекомендуется иметь отдельные `.lib` файлы для отладки и выпуска и использовать их соответственно в проекте.
Тебе обязательно делать только под MSVC? Для библиотек рекомендую CMake .
Похожие вопросы