Provo a passare un puntatore di una struttura che mi viene dato come valore di ritorno dalla funzione 'bar' alla funzione 'foo_write'. Ma ottengo il messaggio di errore 'TypeError: deve essere un tipo ctypes' per la riga 'foo = POINTER (temp_foo)'. Nel ctypes online help ho scoperto che 'ctypes.POINTER' funziona solo con tipi di ctypes. Conosci un altro modo? Cosa raccomanderesti?Come restituire un puntatore a una struttura in 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)
Intendevi bar() per restituire 'FOO *' piuttosto che 'foo *'? – Clifford
Hai omesso 'da ctypes import *'? – Clifford