我創建了一個簡單的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