Недавно мы попытались разбить некоторые из наших проектов Visual Studio на библиотеки, и все, казалось, скомпилировалось и построилось в тестовом проекте с одним из проектов библиотеки как зависимость. Однако попытка запустить приложение дала нам следующее неприятное сообщение об ошибке во время выполнения:
Ошибка проверки времени выполнения # 0 - значение ESP не было должным образом сохранено во время вызова функции. Обычно это результат вызова указателя функции, объявленного с другим соглашением о вызовах.
Мы даже не указали соглашения о вызовах (__cdecl и т.д.) для наших функций, оставив все параметры компилятора по умолчанию. Я проверил, и параметры проекта согласованы для вызова соглашения по библиотеке и тестовым проектам.
Обновление. Один из наших разработчиков изменил параметр проекта "Основные проверки выполнения" с "Both (/RTC1, equiv. to/RTCsu)" на "Default", и время выполнения исчезло, оставив программу явно корректной. Я не доверяю этому вообще. Было ли это правильным решением или опасным взломом?