SWIG:Python列表到uint32_t *?

时间:2010-03-23 21:00:17

标签: c++ python swig

我正在尝试使用SWIG生成的Python模块。有一个C ++类定义的工作方式如下(简化):

namespace Foo
{
    class Thing
    {
    public:
        Thing();
        ~Thing();

        bool DoSomething(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer);
    };
};

当我尝试从Python调用它时,我得到一个关于需要为'uint32_t *'类型的最后一个参数的错误。普通的Python整数对其他参数工作得很好,所以我无法理解为什么一个int列表对缓冲区不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

DoSomething的最后一个参数是指向 uint32_t指针,而不是uint32_t。因此,与其他参数不同,函数需要接收指向整数或整数数组的指针(因为数组可以在预期指针的任何地方使用)。

我怀疑在这种情况下(因为它被称为'缓冲区')该函数需要一个数组。您应该查看Unbounded C arrays.

上的SWIG文档