Tôi cố gắng chuyển con trỏ của một cấu trúc được cung cấp cho tôi dưới dạng giá trị trả về từ hàm 'bar' đến hàm 'foo_write'. Nhưng tôi nhận được thông báo lỗi 'TypeError: phải là một loại ctypes' cho dòng 'foo = POINTER (temp_foo)'. Trong số ctypes online help tôi thấy rằng 'ctypes.POINTER' chỉ hoạt động với các loại ctypes. Bạn có biết cách khác không? Bạn muốn giới thiệu gì?Làm thế nào để trả về một con trỏ đến một cấu trúc trong ctypes?
C:
typedef struct FOO_{
int i;
float *b1;
float (*w1)[];
}FOO;
foo *bar(int foo_parameter) {...
void foo_write(FOO *foo)
Python với 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)
Ý của bạn là bar() trả về 'FOO *' thay vì 'foo *'? – Clifford
Bạn đã bỏ qua 'từ nhập khẩu ctypes *'? – Clifford