2017-02-01 6 views
5

Я понимаю, что (за исключением исключения с VS2015 на VS2017) Microsoft делает ABI нарушением изменений между каждой версией инструментальной цепочки Visual C++. Поэтому, если я хочу распространять двоичную версию библиотеки, я должен распространять отдельную версию этого для каждой новой версии VS, которую я хочу поддерживать.ABI-совместимость c-библиотек visual studio

Теперь мои вопросы:

  • Это также верно для чистых с-библиотек?
  • Отвечает ли ответ между dlls и статическими библиотеками?
  • Есть ли официальная политика от MS в отношении того, к чему они стремятся в будущем?

(в частности, в свете refactoring and stabilization of the crt)

Если это уместно, я бы довольствоваться ответом специфической для Win10, но я также заинтересован во всех версиях окон, так как (и в том числе) Win7. Версии VS Studio, которые мне интересны, - VS2013/15/17 и - насколько можно предсказать прогнозы - будущие выпуски.

+2

Pure 'C' стабилен (нашел заявление в прошлом - если я могу найти его снова отправляет в ответ). Обратите внимание, что все методы Win32API (включая COM) экспортируются как 'C'. Внесение изменений в '' '' '' 'ABI нарушит все вызовы в ОС. –

+0

@RichardCritten: Большое спасибо. Это было в значительной степени тем, что я ожидал, но я не смог найти официальную документацию. Было бы здорово, если бы вы могли найти источник для этого, но я также согласился бы с вашим ответом без него. – MikeMB

ответ

0

ABI чистого C, несомненно, стабилен. Вы можете смешивать библиотеки DLL, выполненные с другой версией VisualStudio, если у вас также есть правильные зависимости MSVCRT * (это не относится, если вы создаете их со статическим libc, очевидно).

Однако вы должны проявлять особую осторожность при прохождении указателя поворота (см http://siomsystems.com/mixing-visual-studio-versions/ а также Library ABI compatibility between versions of Visual Studio)

 Смежные вопросы

  • Нет связанных вопросов^_^