Python与C的互操作性
我想把一个现有的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语言的函数。库里已经提供了一些类型和功能。
不过有几点需要注意:如果你需要把三重指针传给C语言的函数,这个操作不是很简单。另外,我在Linux上用静态库时遇到了一些问题,但用DLL和共享对象是没问题的。