我正在使用古巴图书馆,我希望在我的Cython文件中使用C代码。要从头文件cuba.h中使用我想要的方法,我写在我的Cython文件的顶部
cdef extern from "cuba.h":
void Cuhre(const int ndim, const int ncomp, integrand_t integrand,
const double epsrel, const double epsabs,
const int flags, const int mineval, const int maxeval,
const int key,
int *nregions, int *neval, int *fail,
double integral[], double error[], double prob[])
Cuhre是我唯一想要使用的方法,上面是它的签名。该程序能够找到cuba.h,但它引发了一个错误,表示它不能将integrand_t识别为类型。在cuba.h中,它定义了一个函数类型* integrand_t:
typedef double cubareal;
typedef int (*integrand_t)(const int *ndim, const cubareal x[], const int *ncomp, cubareal f[], void *userdata);
那么,我如何修复此错误并在我的Cython程序中使用古巴库?提前感谢您的帮助。
答案 0 :(得分:1)
在cython文件中定义你的typedef,如下所示
cdef extern from "cuba.h":
ctypedef int (*integrand_t)(const int *ndim, const cubareal x[], const int *ncomp, cubareal f[], void *userdata)