python ctypes 模块

ctype模块可以让python 调用c写的动态库。主要是对应两种语言的基本数据类型,指针,函数指针,结构体等类型的支持,从而可以让python可调用c库。

python-ctypes

例子1,用c自定义一个函数,编译后用python调用:

 

编译后生成动态库文件:

linux:

windows:

 

python 调用动态库:

运行结果:

 

例子2, 调用系统的printf函数, 跨平台支持mac, linux, windows:

运行结果:

 

例子3,关于类型自动转换:

可以自动转换:

运行结果:

 

结果:

 

例子4, 函数的参数可以是指针类型,然后可以通过参数返回值:

运行结果:

 

例子5, 指定返回值类型:

运行结果:

 

例子6, 关于多维数组,ctype 重载了 * 号

 

例子7, 指针, 用POINTER(),pointer()

运行结果:

 

例子8,关于函数指针,用CFUNCTYPE()

运行结果, linux和windows的结果有点不一样:

 

感谢知乎上的讲解:https://zhuanlan.zhihu.com/p/20152309?columnSlug=python-dev

还参考了:

http://blog.csdn.net/linda1000/article/details/12623527

http://blog.csdn.net/coroutines/article/details/41957527

官方DOC:

https://docs.python.org/2/library/ctypes.html

 

dir(ctypes), 手动分了行,好看些: