我嘗試傳遞一個結構的指針,該結構作爲從函數'bar'返回給函數'foo_write'的返回值。但是我得到錯誤消息'TypeError:must be a ctypes type'for line'foo = POINTER(temp_foo)'。在ctypes online help我發現'ctypes.POINTER'只適用於ctypes類型。你知道另一種方式嗎?你會推薦什麼?如何將指針返回給ctypes中的結構?
C:
typedef struct FOO_{
int i;
float *b1;
float (*w1)[];
}FOO;
foo *bar(int foo_parameter) {...
void foo_write(FOO *foo)
Python和ctypes的:
class foo(Structure):
_fields_=[("i",c_int),
("b1",POINTER(c_int)),
("w1",POINTER(c_float))]
temp_foo=foo(0,None,None)
foo = POINTER(temp_foo)
foo=myclib.bar(foo_parameter)
myclib.foo_write(foo)
你是說bar()返回'FOO *'而不是'foo *'? – Clifford 2010-06-28 11:45:29
您是否遺漏了'從ctypes import *'? – Clifford 2010-06-28 11:46:06