Python ctypes的使用实例


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解析器进程会崩溃。


文章作者: chopin1998@gmail.com
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chopin1998@gmail.com !
评论
 上一篇
关于ToF 番一 关于ToF 番一
曾经,通过CCD/CMOS等图像阵列传感器以及光学镜头,可以获取一帧帧平面2D的图像。现在,日新月异的传感器技术以及强大的移动计算能力,让计算机获得深度感知能力的可能性也越来越多。当获得一帧3D深度图景时,会收到一幅2D深度阵列, 其中的每
2020-03-22
下一篇 
the first blog the first blog
安定了
2020-03-19
  目录