我创建了一个简单的SWIG辅助函数来处理指针从C++代码中,我包裹返回:的Python/SWIG类型错误
//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返回了具有类型错误,抱怨n
不是一个整数:
for i in range(n):
TypeError: an integer is required
我向你保证,n
实际上是一个整数(type(n)
一致返回<type 'int'>
)。因此,我相信问题在于SWIG功能。奇怪的是,foo.getPtrVal(ptrs, i)
被称为n
次没有问题,然后,第一次退出j
内循环后立即抛出错误。有任何想法吗?如果能澄清部分,我可以发布更多的代码段。谢谢!
顺便说一句,你的Python代码的第一行最后缺少一个冒号。这可能是问题吗? –
原始代码确实包含冒号,只是错过了它的帖子。 – glinka
“如果能澄清部件,我可以发布更多的代码段。” - 如果您发布的代码不是您正在运行的代码,那么这是一个不诚实的问题。尝试编译并运行您发布的代码。 – Oktalist