我在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结构?
发布于 2019-05-13 01:35:44
type = Entry_t("e",3,1,5,12,POINTER(testctx))
当您将testctx
传递给您的对象时,使用pointer()
函数(小写),因为大写变体用于描述结构而不是构造对象。此外,建议不要在Python函数中隐藏内建,因此请考虑将变量从"type“重命名为其他名称。
t1 = Entry_t("e", 3, 1, 5, 12, pointer(testctx))
https://stackoverflow.com/questions/56100965
复制相似问题