我创建了一个简单的 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抛出错误。有任何想法吗?如果可以澄清部分,我可以发布更多代码段。谢谢!