主页

索引

模块索引

搜索页面

cffi

  • cffi模块可以通过定义C函数的接口来调用共享对象文件中的函数。

安装:

pip install cffi

cffi 提供了两种主要的使用模式:

ABI(Application Binary Interface)模式
API(Application Programming Interface)模式

ABI 模式

  • ABI 模式使用现有的 C 库,不需要任何编译步骤。它主要用于直接调用现有的动态链接库。

from cffi import FFI

ffi = FFI()

# 定义 C 函数原型
ffi.cdef("""
    int printf(const char *format, ...);
""")

# 加载 C 标准库
C = ffi.dlopen(None)

# 调用 C 函数
C.printf(b"Hello, %s!\n", b"world")

API 模式

  • API 模式更为灵活,它允许你编写和编译自己的 C 代码,这种模式需要一个编译步骤。

from cffi import FFI

ffi = FFI()

# 定义 C 函数和类型
ffi.cdef("""
    int add(int, int);
""")

# 编写 C 代码
ffi.set_source("_example", """
    int add(int a, int b) {
        return a + b;
    }
""")

# 编译 C 代码
ffi.compile()

# 使用编译好的模块
from _example import ffi, lib

print(lib.add(3, 4))  # 输出 7

主页

索引

模块索引

搜索页面