Python中可以使用ctypes模块方便的调用C代码写的库, 而无须对C代码有任何多余的要求。
此仅列一例,权做记录。
首先有两个文件, C和对应的头文件。
在people.c中, 有三个非常简单的函数。 供日后调用。
而在people.h中, 是对应的函数声明, 在此不表。
接下来的一步, 将这个C代码编译成库, 使用如下的命令
这将生成一个叫 libpeople.so的库, 和平常编译库的方式完全一样。
最后, 激动人心的时刻—-直接在python中调用这个C库。
进入ipython后, 首当其冲import ctypes, 然后用cdll里的LoadLibrary导入刚刚生成的库。
因为make_people使用了自定义的struct和指针, 所以需要现在Python里先建立对于的数据结构。
之后就能随心所欲的调用c库里的函数了。
一些说明。
库导入后本身没有动态性, 也就是说在ipython里, 输入完mylib.之后,按tab键是不能自动补全所有的function的,但是手工输入一次之后, 还是能看到已经有的东西。
因为Python的脚本性, 如果C库没有做好类型检查,特别是指针相关的,而发生致命错误的,在Python动态运行时, Python解析器进程会崩溃。