为什么 GCC 编译的 Python 库在编译器版本之间兼容,而 MSVC 的不兼容?

Why GCC-compiled Python libraries compatible across compiler versions while MSVC ones are not?

我正在向 Linux 和 Windows 上的第 3 方应用程序的 Python 解释器添加一些 Python 包(来自 pip)。在他们的应用程序 Linux 版本中,他们针对 GCC 4.xx 编译了 Python,而在他们的 Windows 版本中,他们针对 MSC 1900 编译了它。

在 Windows 上,我必须构建每个 Python 包,其中包含具有相同 MSVC 版本的 .pyd 文件,否则在尝试将它们导入 Python。在 Linux 上,我能够在 4.xx 构建的解释器中导入使用任何 GCC 版本构建的 Python 库。

谁能解释一下它是如何工作的,或者为什么用不同的 MSVC 版本构建的二进制文件不能一起工作?

2015 年之前的每个 Visual Studio 版本都有自己的 C 运行时版本,必须单独安装。在 Visual Studio 2015 年 Universal CRT has been introduced 现在是 Windows 10.

的一部分

然而,这并不意味着使用不同运行时的库不兼容。您收到的错误可能是由于您根本没有在系统上安装相应的运行时版本。除此之外 they should work just fine (except for some ).