我在C语言中具有以下结构:
struct Entry_t{
char *key;
int data_type;
int nbitems;
size_t offset;
int size;
Entry_t *pcfg;
};
和C中的以下函数:(我最终想初始化该结构并将其从python传递给C)
int get_config(void *ctx, Entry_t* pconfig, void *pdest, char *key);
我在python中定义了相同的结构,如下所示:
class Entry_t(Structure): pass
Entry_t._fields_ = [
('key', c_char_p),
('data_type', c_int),
('nbitems', c_int),
('offset', c_size_t),
('size', c_int),
('pcfg', POINTER(Entry_t)),
]
testctx = Entry_t() //initialize with empty values
我创建了Entry_t实例,如下所示:
type = Entry_t("e",3,1,5,12,POINTER(testctx))
创建实例时出现此错误
TypeError: expected LP_Entry instance, got CArgObject
如何正确初始化我的entry_t结构?
答案 0 :(得分:0)
type = Entry_t("e",3,1,5,12,POINTER(testctx))
当您将testctx
传递给对象时,请使用pointer()
函数(小写),因为大写变体用于描述结构而不是构造对象。另外,建议不要隐藏内置的Python函数,因此请考虑将变量从“类型”重命名为其他名称。
t1 = Entry_t("e", 3, 1, 5, 12, pointer(testctx))