Я создал C-библиотеку с рядом функций, которые я могу вызвать из python с использованием ctypes. Я получил мою голову вокруг некоторых из более простых, но я озадачен тем, как я передаю правильные аргументы следующей функции:Python ctypes function pointer
foo(double *, double *, void(*f1)(double *, double *, double, struct sys *),
void(*f2)(double *, double *, double, struct sys *), struct sys *, double *,
double, double, int, int, gsl_rng *)
Моя начальная точка установки .argtypes
для функции. У меня есть двойные массивы, отсортированные с POINTER(100*c_double)
и т. Д.
Однако я зациклен на том, как передать указатели на функции. У меня есть ряд функций (формы f1 и f2), которые находятся в той же библиотеке, что и foo
, что я хотел бы передать в качестве аргументов foo
.
Я думаю, что мне удалось Пропустите структура SYS * указатель ОК, используя следующий код:
class sys(Structure):
_fields_ = [("alpha", c_double),
("sigma", c_double)]
, а затем с помощью POINTER(sys)
как argtype
там. Наконец, gsl_rng
является типичным генератором случайных чисел из Научной библиотеки GNU; Я не знаю, с чего начать.
Может ли кто-нибудь осветить сложный ctypes?