У меня есть код C:Функции обратного вызова с использованием ctypes
typedef result function_callback(struct mes_t* message, void* data)
struct mes_t
{
uint32_t field1
uint32_t field2
void* data
};
function_one(&function_callback, data)
приложение вызывает определенные пользователем (в function_one) функции обратного вызова function_callback. В функции обратного вызова передано поле1, поле2 и параметры данных (данные обычно равны 0)
Правильно ли написан код на питоне для этого примера?
class mes_t(ctypes.Structure):
pass
mes_t._fields_ = [
('field1', ctypes.c_uint32),
('dfield2', ctypes.c_uint32),
('data', ctypes.POINTER(ctypes.c_void_p))]
data_t=ctypes.c_void_p
data=data_t()
CALLBACK=CFUNCTYPE(ccg_msg, data_t)
cb_func=CALLBACK()
result = function_one(ctypes.byref(cb_func), ctypes.byref(data))
Это может помочь исправить ваш пример кода; объявления C недействительны (я предполагаю, что вы просто пропускаете точки с запятой и помещаете вещи в неправильный порядок), и неясно, что такое 'ccg_msg'. –