我创建了一个C库,其中包含许多函数,我可以使用ctypes从Python中调用这些函数。我已经理解了其中一些简单的函数,但是我不知道如何将正确的参数传递给以下函数:
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 Scientific Library的典型随机数生成器; 我不知道从哪里开始。
有人可以给我解释一下复杂的ctypes吗?