首页 > 解决方案 > 可以在 python 中扩展来自 FFI 的 cstruct 吗?

问题描述

我正在用 CFFI 包装一个库。我有一些简单的结构,我想保留 C 结构(或至少与 c 结构互操作),但我想为它们添加一些额外的方法,例如转换值、数据转换等。CFFI 是否提供这样做的便利,还是我最好的选择组合,使 c 结构成为一个 python 类的数量?所以说我在 ffi cdef 中有一个这样的结构:

typedef struct {
    int iArgType;
    void *pData;
} OptionArg_t;

该结构有一个整数值,对应于数据指针后面数据的假定数据类型。在 python 中,我想使用如下对象:

option_arg = c_get_arg() #=> some c function that creates a specific struct
option_arg.data #=> data cast to appropriate type based on custom logic, maybe transformed or even producing a python object
c_function(option_arg) # calling a c function with the struct, without having to unwrap it

cFFI 是否允许这样做,或者我有办法欺骗它吗?或者我是否被迫总是在另一个对象中手动包装和解包结构?

标签: pythoncpython-cffi

解决方案


推荐阅读