1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] Python ctypes function pointer

Discussão em 'Python' iniciado por Stack, Julho 15, 2025.

  1. Stack

    Stack Membro Participativo

    I created a C-library with a number of functions that I can call from python using ctypes. I've got my head around some of the simpler ones but I'm stumped by how I pass the right arguments to the following function:

    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 *)


    My starting point is setting the .argtypes for the function. I've got the double arrays sorted with POINTER(100*c_double) etc.

    However, I am stuck on how to pass the function pointers. I have a number of functions (of the form of f1 and f2), which reside in the same library as foo that I would like to pass as arguments to foo.

    I think I've managed pass the struct sys* pointer ok by using the following code:

    class sys(Structure):
    _fields_ = [("alpha", c_double),
    ("sigma", c_double)]


    and then using POINTER(sys) as the argtype there. Finally, the gsl_rng is a typical random number generator from the GNU Scientific Library; I don't know where to start here.

    Can anybody shine some light on the complicated ctypes?

    Continue reading...

Compartilhe esta Página