我尝试将一个结构指针传递给函数“bar”作为函数“foo_write”的返回值。但我收到行“foo = POINTER(temp_foo)”的错误消息“TypeError:必须是 ctypes 类型”。在里面ctypes在线帮助我发现“ctypes.POINTER”仅适用于 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)
Change
foo = POINTER(temp_foo)
to
foo = pointer(temp_foo)
可以解决问题。
请参见http://docs.python.org/library/ctypes.html#ctypes-pointers了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)