SWIG,py + C:指针下没有属性

时间:2012-01-28 11:04:24

标签: python c swig

我对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指向正确的结构......

2 个答案:

答案 0 :(得分:2)

根据SWIG for Python文档的pointers部分:

  

你唯一不能做的就是取消引用Python的指针。

您需要取消引用该指针才能访问其成员。您需要在C中编写accessor / mutator函数来操作struct成员。

答案 1 :(得分:0)

它不漂亮,但你总是可以编写允许你使用指针的访问器函数。