Как создать CFuncType в Python

Мне нужно передать функцию обратного вызова, которая является CFuncType (ctypes.CFUNCTYPE или ctypes.PYFUNCTYPE...).

Как я могу привести функцию python к CFuncType или как я могу создать функцию CFuncType в python.

1 ответов


Я забыл, как здорово ctypes:

ниже копируется из http://docs.python.org/library/ctypes.html

Итак, наша функция обратного вызова получает указатели на целые числа, и возвращать целое число. Сначала мы создаем тип для функции обратного вызова:

CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))

для первой реализации функции обратного вызова мы просто печатаем полученные Аргументы и возвращаем 0 (инкрементное развитие ;-):

 def py_cmp_func(a, b):
     print "py_cmp_func", a, b
     return 0

создайте вызываемый обратный вызов C:

cmp_func = CMPFUNC(py_cmp_func)