我创建了一个简单的 SWIG 辅助函数来处理从我包装的 C++ 代码返回的指针:
//in module foo:
%inline %{
double getPtrVal(double *ptr, int i) {
return (double) ptr[i];
}
%}
这工作得很好,直到我尝试了类似的东西:
for i in range(n):
for j in range(n):
val = foo.getPtrVal(ptrs, i)
此时 Python 返回了一个 TypeError,抱怨这n
不是整数:
for i in range(n):
TypeError: an integer is required
我向你保证n
,事实上,它是一个整数(type(n)
始终返回<type 'int'>
)。因此,我认为问题出在 SWIG 函数中。奇怪的是,foo.getPtrVal(ptrs, i)
调用n
次数没有问题,然后,在第一次退出内部循环后立即j
抛出错误。有任何想法吗?如果可以澄清部分,我可以发布更多代码段。谢谢!