Взаимозаменяемы ли скомпилированные файлы .lib для разных версий Microsoft Visual C ++?

Некоторые проекты предоставляют единый набор двоичных файлов "Windows" для библиотек C (и, возможно, C ++ - не уверен). Например, см. Ссылки на правой стороне этой страницы, связанной с libxml .

Я почти уверен, что нет никакого способа конвертировать файлы VC ++ .lib в файлы MinGW GCC .a, поэтому называть их двоичными файлами «Windows», а не «Microsoft», может ввести в заблуждение. Но я также удивлен, что нет очевидной необходимости в разных двоичных файлах для разных версий VC ++.

Я, кажется, помню, много лет назад у меня были проблемы с написанием плагинов для музыкальной программы в стиле трекера (Jeskola Buzz), потому что эта программа использовала VC ++ 6, а я обновился до VC ++ 7. Я не помню, в чем именно проблема - возможно, это было частично связано с DLL, но я знаю, что им не нужно заботиться о версии VC ++. Я думаю, что проблема связана с предоставленными файлами .lib и, возможно, с библиотеками времени выполнения, с которыми они связаны. Но это было давно, так что все немного расплывчато.

В любом случае, могут ли библиотеки, скомпилированные одной версией MS VC ++, быть связаны с проектами, созданными с помощью другой версии? Какие ограничения применяются, если они есть?

Меня интересуют библиотеки как C, так и C ++, которые будут вызываться из проектов C ++ (я редко использую C, за исключением библиотек C, вызываемых из C ++).

9
задан Steve314 9 December 2011 в 00:24
поделиться