Я только что перенес свой проект на модули C++20. С тех пор я начал сталкиваться с некоторыми странными ошибками, я думаю, что MSVC глючит с модулями, но самое неприятное то, что примерно в каждой 10-й сборке я запускаю приложение, которое вылетает даже до основной функции, сбой происходит в файле exe_common.inl в функции __scrt_common_main_seh() сообщает мне, что нарушение прав доступа происходит в строке:
Код: Выделить всё
__scrt_current_native_startup_state = __scrt_native_startup_state::initialized;
Когда я смотрю на локальные переменные через отладчик, мне кажется, что все они в порядке, не то чтобы я хорошо разбирался в этом коде, но, похоже, там нет нулевых указателей или каких-либо недопустимых значений. . Вы можете сказать, что в моем коде может быть ошибка, но вот что забавно. Однажды возникает эта ошибка, сколько бы раз я ни пытался запустить скомпилированный exe с отладчиком или без него, он всегда вылетает. Но если я перекомпилирую весь проект, что полностью устраняет причину, по которой я переключился на модули, приложение работает нормально, как будто ничего и не произошло. Поскольку это происходит только в одной из многих сборок, а после перекомпиляции просто исчезает, у меня нет возможности надежно воспроизвести это.
Кто-нибудь сталкивался с подобной проблемой или имел представление, почему это может происходить? Я хотел бы добавить, что эта ошибка на самом деле никогда не случалась со мной, пока я не добавил определенную библиотеку в свой проект. Может ли это быть проблема? Я скомпилировал библиотеку с помощью CMake, чтобы можно было использовать настройки проекта, соответствующие моему проекту. Я не уверен, может ли это быть причиной или просто удобством.
Подробнее здесь:
https://stackoverflow.com/questions/785 ... ering-main