MSDN.WhiteKnight - Stack Overflow answers
Ответ на "О типах библиотек debug, release, debug dll, release dll"
Answer 791821
Смешивание разных версий стандартной библиотеки С++ в программе, в целом, поддерживается. Отладочная и релизная версии DLL имеют разное имя, например ucrtbased.dll и ucrtbase.dll, поэтому они могут независимо существовать в одном процессе.
Проблемы появляются, когда объекты, созданные в одной версии библиотеки, передаются в код, использующий другую версию: внутренняя структура дескрипторов файлов и других объектов может быть разной. При использовании объекта в другой версии библиотеки может возникнуть ошибка или непредсказуемое поведение.
Если в DLL используется статическая стандартная библиотека, для нее создается независимый "экземпляр" со своим состоянием, существующий параллельно экземпляру основной программы. Передача объектов из одного экземпляра в другой также может привести к ошибкам (даже если они одной версии). Статическое связывание имеет и другие проблемы: увеличение размера бинарников, невозможность использования обновлений безопасности и т.п. Поэтому, статическое связывание со стандартной библиотекой для DLL не рекомендуется.
Подробнее: Potential Errors Passing CRT Objects Across DLL Boundaries
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.