我对SWIG(C + python)
有一个奇怪的问题在C中,我有一个返回指向struct elements_t
的指针的函数。我在python中调用functon,得到结果(指针)但我无法访问结构的元素..
typedef struct elements elements_t;
struct elements {
int nelements;
// ... other stuff
};
elements_t* get_elements()
{
elements_t* p;
// ...
return p;
}
在python中我做:
r = clibrary.get_elements()
print r
# <Swig Object of type 'elements_t *' at 0xb77029f8>
print r.nelements
# AttributeError: 'SwigPyObject' object has no attribute 'nelements'
所以我得到的最后一个错误是没有nelements
,即使p
指向正确的结构......
答案 0 :(得分:2)
根据SWIG for Python文档的pointers部分:
你唯一不能做的就是取消引用Python的指针。
您需要取消引用该指针才能访问其成员。您需要在C中编写accessor / mutator函数来操作struct成员。
答案 1 :(得分:0)
它不漂亮,但你总是可以编写允许你使用指针的访问器函数。