Intento pasar un puntero de una estructura que se me da como un valor de retorno de la función 'bar' a la función 'foo_write'. Pero aparece el mensaje de error 'TypeError: debe ser un tipo de tipo de letra' para la línea 'foo = POINTER (temp_foo)'. En el ctypes online help encontré que 'ctypes.POINTER' solo funciona con tipos de tipos. ¿Sabes de otra manera? ¿Qué recomendarías?¿Cómo devolver un puntero a una estructura en ctypes?
C:
typedef struct FOO_{
int i;
float *b1;
float (*w1)[];
}FOO;
foo *bar(int foo_parameter) {...
void foo_write(FOO *foo)
Python con 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)
¿Quisiste decir bar() para devolver 'FOO *' en lugar de 'foo *'? – Clifford
¿Ha omitido 'from ctypes import *'? – Clifford