SWIG: Python列表转uint32_t *?
我正在尝试使用一个通过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整数都没问题,所以我不明白为什么一个整数列表就不能用作缓冲区。有什么建议吗?
1 个回答
2
最后一个参数是指向 uint32_t
的一个“指针”,而不是直接的 uint32_t
。这意味着和其他参数不同,这个函数希望接收到的是一个整数的地址,或者是一个整数数组(因为在需要指针的地方,数组也可以用)。
我猜在这个情况下(因为它叫做“buffer”),这个函数可能是希望接收一个数组。你可以看看 SWIG 的文档,了解一下 无界 C 数组。