CONTENT:
调用动态链接库里的函数
ctypes提供了一些方法使Python与C的数据类型相兼容,并且允许Python调用动态链接库或者共享库中的函数。
下面是一段计数排序的C语言代码(counting_sort.c):
将它编译成动态链接库:
ctypes里面详细的说明了如何创建需要的C
数据类型,在调用函数并传参的时候需要将Python
数据类型转换成相应的C
数据类型。
下面是调用C
函数的Python
代码:
这种方式用来封装(适配)已存在的动态链接库,并给Python
调用还是非常好的,一般不会有人通过这个自己编写C来扩展Python
,如果你非要这样当我没说……
编写Python的C扩展
照猫画虎,下面是一段计算Python
列表里面所有数字和的C
代码:
可以通过标准库自带的distutils
将C
扩展编译成动态链接库并打包到相应的dist-package
目录下:
这里直接编译成动态链接库,并在当前目录下启动解释器:
编写C
扩展,里面有很多东西需要注意。如引用计数就是很重要的,关系到内存使用和垃圾回收,见Objects, Types and Reference Counts。总之,这些东西还有待研究……
具体的接口参考Python/C API Reference Manual