我正在尝试使用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列表对缓冲区不起作用。有什么建议吗?
答案 0 :(得分:2)
DoSomething
的最后一个参数是指向 uint32_t
的指针,而不是uint32_t
。因此,与其他参数不同,函数需要接收指向整数或整数数组的指针(因为数组可以在预期指针的任何地方使用)。
我怀疑在这种情况下(因为它被称为'缓冲区')该函数需要一个数组。您应该查看Unbounded C arrays.
上的SWIG文档