Python cffi 学习笔记1(ABI level,in-line)

环境

ubuntu16.04
python3.5.1+
cffi 1.7.0

安装

pip install cffi

简介

CFFI(Foreign Function Interface for Python calling C)可以用作以下四种模式:ABI in-line,ABI out-line,API in-line,API out-line。
ABI模式是通过二进制文件调用库函数,而API模式是通过C编译器调用库函数,下面会有详细举例。
在in-line模式里,当你运行Python代码是所有库都会重新加载,而在out-line模式,你可以预先把要调用的代码编译成模块然后再加载。

简单的例子(ABI level,in-line)

from cffi import FFI
ffi = FFI()
ffi.cdef("""
    int printf(const char *format, ...); // 可以从man page或者头文件里面复制
""")
C = ffi.dlopen(None) # 加载整个C命名空间
arg = ffi.new("char[]", b"world") # 等于C代码: char arg[] = "world";
print(C.printf(b"hi there, %s.\n", arg)) # 调用printf
#返回结果
hi there, world.
17 

这个例子没有使用任何C编译器。这就是所说的ABI模式,在该模式下,如果去访问没有在cdef()中定义过的函数或者结构体,程序就会崩溃。

如果你的环境中有C编译器,强烈推荐使用API模式(该模式比ABI模式更快),下节接着介绍...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容