前言:
CFFI(C Foreign Function Interface)是一个提供与C代码交互的Python库。它允许Python代码调用C语言代码,并在Python中使用C数据结构。CFFI主要有两种接口:ABI接口和API接口。ABI接口用于直接调用C函数,而API接口用于编写C扩展。
1.安装CFFI
在使用CFFI之前,首先确保你的环境中安装了CFFI。可以使用pip进行安装:
pip install cffi
2. CFFI 的两种模式
2.1 ABI 模式(Application Binary Interface)
直接调用已编译的共享库(如 .dll 或 .so),无需提前编译 C 代码。简单但性能较低。
API 模式(Application Programming Interface)
需要提前编译 C 代码为共享库,性能更高,适合生产环境。
2.2. ABI 模式示例
示例 1:调用 C 标准库函数
from cffi import FFI
ffi = FFI()
# 声明需要调用的 C 函数
ffi.cdef("""
int printf(const char *format, ...);
""")
# 加载 C 标准库
lib = ffi.dlopen(None) # None 表示默认加载标准库
# 调用 C 的 printf 函数
lib.printf(b"Hello from CFFI (ABI mode)!\\n")
示例 2:调用自定义动态库
假设有 libadd.so(Linux)或 add.dll(Windows),包含以下 C 函数:
// add.c
int add(int a, int b) {