Для начала, извините за мой английский.
У меня возникли проблемы с использованием функции из динамической библиотеки (библиотеки gnu gsl) в скрипте Python.
Действительно, я знаю, что использую функцию, но мне нужно определить белые данные типа C для использования конкретной функции.
Во-первых, это пример использования функции в скрипте C ++, который я использовал бы в скрипте Python:
double fn1 (double x, void * params)
{
return cos(x) + 1.0;
}
int
main (void)
{
gsl_min_fminimizer *s;
double m = 2.0, m_expected = M_PI;
double a = 0.0, b = 6.0;
gsl_function F;
F.function = &fn1;
F.params = 0;
T = gsl_min_fminimizer_brent;
s = gsl_min_fminimizer_alloc (T);
gsl_min_fminimizer_set (s, &F, m, a, b);
...
}
typedef для gsl_function в заголовке:
struct gsl_function_struct
{
double (* function) (double x, void * params);
void * params;
};
typedef struct gsl_function_struct gsl_function ;
#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
Я знаю, использовать функцию с ctypes:
#Library Call
lib_gsl=CDLL(path_gsl+"gsl.dll")
#Functions Define
gsl_opti_brent=lib_gsl.gsl_min_fminimizer_brent
gsl_opti_alloc=lib_gsl.gsl_min_fminimizer_alloc
gsl_opti_init=lib_gsl.gsl_min_fminimizer_set
T=gsl_opti_brent
T_=pointer(T)
s=gsl_opti_alloc(T_)
До этого проблем не возникало, но когда я хочу использовать функцию gsl_min_fminimizer_set, мне нужно определенное определение типа в заголовке с именем gsl_function.
Есть кто-то, кто знает, как я могу определить typedef gsl_function в Python для использования dll, называемой функцией gsl_min_fminimizer_set?
Спасибо.
Я ожидаю, что я явно