为什么Windows上的Python需要使用相同版本的Microsoft Visual C ++来构建本机扩展?

时间:2015-03-03 19:56:53

标签: python windows python-extensions

扩展只是动态链接库,不应该在不同版本的MSVC上出现问题。

2 个答案:

答案 0 :(得分:2)

许多扩展需要使用相同的逐字节布局来访问或创建CPython对象,并且它们必须由主程序分配,它们必须可由垃圾收集器管理,等等。

Python可以毫无问题地调用任何DLL(例如使用ctypes),但扩展不仅仅是一个DLL,而且还需要调用对流兼容性。

答案 1 :(得分:2)

不同版本的Microsoft编译器链接到特定于版本的C运行时库。 IIRC,IO和内存分配存在差异。如果扩展不依赖于版本之间不同的C运行时行为,则扩展模块将起作用。但是可以引用任意C代码的扩展模块可以调用不同运行时库中的不兼容性。更容易说'#34;你必须使用相同的版本。"和#34;如果你只使用这个C的子集,那么你可以使用任何版本;否则,您必须使用相同的版本。"