Этот пост SO: Совместим ли двоичный код Visual-C ++ - 2017 с VC ++ -2015? ясно говорит, что VS 2017 бинарно совместим с VS 2015. Это даже похоже на официальную позицию.
Мой вопрос: в прошлом я отчетливо помню, как сталкивался с ошибками компоновщика (я не помню конкретный набор ошибок) каждый раз, когда пытаюсь связать статическую библиотеку, которая была скомпилирована с другой версией. из MSVC в EXE, который создается с более новой версией MSVC.
Тем не менее, двоичная (не) совместимость звучит как что-то, что взорвется вам в лицо во время выполнения, а не во время компоновки.
Может ли кто-нибудь сказать мне, действительно ли предыдущие версии MSVC вызвали ошибки компоновщика производителя при несовпадении версий? Как это было достигнуто?
ИЗМЕНИТЬ
Как это повлияет на статические библиотеки, созданные с включенным WPO / LTCG? Я считаю, что они создают промежуточные объектные файлы (в отличие от COFF), и Microsoft не гарантирует, что формат этих промежуточных файлов останется неизменным в разных версиях компилятора.
/FAILIFMISMATCH:_MSC_VER=1900
в получившемся файле .obj. Теперь я создал EXE с VS 2017 и связался с этой статической библиотекой. Все построено красиво. Так что либо VS 2017 все равно, _MSC_VER = 1900 или что-то еще происходит. - person ForeverLearning   schedule 01.06.2017