Python与C的互操作性

4 投票
3 回答
4109 浏览
提问于 2025-04-15 18:31

我想把一个现有的C语言库(就是纯C,不是C++)封装成Python,这样我就可以在Python脚本中调用它。请问在各种可用的方法中(比如C API、SWIG等),哪种方法最合适呢?

3 个回答

0

因为你的代码是“纯”C语言,所以你可以考虑使用 Pyrex/Cython。这不是一个投票的问题,而且Cython已经被提到过了。我只是想说明为什么对于纯C来说,它是一个更好的选择。

4

SWIG非常适合用来做这个。这里有一个示例教程:http://www.swig.org/Doc1.3/Python.html

8

可以使用Ctypes,它是Python标准库的一部分,效果很好。简单来说,你可以把C语言中的结构和类型封装成Python类,还可以调用C语言的函数。库里已经提供了一些类型和功能。

ctypes

不过有几点需要注意:如果你需要把三重指针传给C语言的函数,这个操作不是很简单。另外,我在Linux上用静态库时遇到了一些问题,但用DLL和共享对象是没问题的。

撰写回答