Может ли связывание старых файлов .lib привести к тому, что msv c создаст цель, которая потерпит неудачу во время выполнения? - PullRequest
0 голосов
/ 14 апреля 2020

Я понимаю, что двоичные интерфейсы приложений (ABI) меняются по номерам основных версий C ++, и это может привести к сбоям во время выполнения с .dll. Я не уверен насчет файлов .lib.

Я также нашел эту цитату из microsoft do c

Если у вас есть объектный файл, который имеет внешние символы со связью C ++, этот объектный файл может неправильно связываться с объектными файлами, созданными другой основной версией набора инструментов. Возможных результатов много: ссылка может полностью потерпеть неудачу (например, при изменении оформления имени). Ссылка может быть успешной, и вещи могут не работать во время выполнения (например, если изменено расположение типа). Или во многих случаях может произойти что-то, что работает, и ничто не будет go неправильным.

Я вижу, что речь идет о файлах .obj, но, поскольку они могут использоваться для ввода компоновщика; возможно, файлы .lib имеют те же проблемы, когда дело касается устаревших ABI?

...