ctypes - python是否需要使用与C库相同的版本进行编译?

时间:2012-01-24 15:22:25

标签: python ctypes

我遇到了一些ctypes非常奇怪的问题。我正在使用ctypes连接到具有C接口的C ++库。该库具有许多并行功能。通常情况下,并行调用最终会出现来自C ++层的段错误,但我也遇到了一些串行代码。我想知道是否对Python解释器和C ++代码是否需要使用相同版本的C ++编译器进行编译有任何限制?如果是这样,我如何找出用于构建Python的c ++?我试图在Python上运行字符串,grep运行gcc和g ++,没有任何显示。

2 个答案:

答案 0 :(得分:4)

根本没有要求使用ctypes调用的本机库必须使用匹配的运行时构建。事实上,甚至没有要求本机库甚至使用C运行时。

例如,您可以使用ctypes来调用用其他语言编写的代码,例如德尔福。或者,您可以使用ctypes调用未与MSVC链接的Windows API函数。

我想你必须到别处去解决你的问题!

答案 1 :(得分:0)

CPython不包含C ++代码,因此对于用于编译加载到CPython进程中的C ++库的C ++编译器没有要求。但是,通常必须使用相同的C ++编译器编译C层和C ++库。如果C ++库或C层链接到libpython,它们必须针对相同版本的CPython进行编译,后者用于运行加载库的ctypes代码。