6

据我了解(除了从 VS2015 切换到 VS2017 的显着例外)微软在 Visual C++ 工具链的每个版本之间进行了 ABI 重大更改。因此,如果我想分发一个库的二进制版本,我必须为我想要支持的每个新版本的 VS 分发一个单独的版本。

现在我的问题是:

  • 纯 c 库也是如此吗?
  • dll和静态库之间的答案是否不同?
  • MS 是否有关于他们未来目标的官方政策?

(特别是考虑到 crt 的重构和稳定性

如果这是相关的,我会满足于特定于 Win10 的答案,但我也对自 Win7(包括)以来的所有 Windows 版本感兴趣。我感兴趣的 VS Studio 版本是 VS2013/15/17 和 - 就任何预测而言 - 未来版本。

4

1 回答 1

1

纯 C 的 ABI 肯定是稳定的。您可以混合使用不同 VisualStudio 版本制作的 DLL,只要您还具有正确的 MSVCRT* 依赖项(如果您显然使用静态 libc 构建它们,则这不适用)。

但是,您必须特别注意传递指针(请参阅http://siomsystems.com/mixing-visual-studio-versions/以及Visual Studio 版本之间的库 ABI 兼容性

于 2017-04-05T13:47:04.190 回答