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

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

7 голосов
/ 28 апреля 2010

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

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

1 Ответ

9 голосов
/ 28 апреля 2010

Я забыл, как круто 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)
...