我正在学习用 cython 包装的 C 库。我使用 cython 编译了几个简单的 C 函数和头文件,现在尝试运行另一个示例,该示例比以前的示例更复杂。
我下载了 Sundials C 源代码的第一个版本(仅限 IDA 模块)并使用 VS 2019 制作了一个 *.lib。现在我试图只包装一个函数来看看它是如何工作的。但是我不知道如何正确地将带有 void * 参数的函数包装到 cython 函数。这是示例。
是指向 C函数ida_mem
分配的内存地址的 void 指针。malloc
我应该如何IDACalcIC
使用正确的指针参数调用底部的函数?
IDA.pyx 文件
cdef extern from "ida.h":
ctypedef double real;
ctypedef int integer;
int IDACalcIC(void *ida_mem, int icopt, real tout1, real epicfac, int maxnh, int maxnj, int maxnit, int lsoff, real steptol)
cpdef CyIDACalcIC(void *ida_mem, icopt, tout1, epicfac, maxnh, maxnj, maxnit, lsoff, steptol):
cdef int icopt
cdef int maxnh
cdef int maxnj
cdef int maxnit
cdef int lsoff
cdef real tout1
cdef real epicfac
cdef real steptol
IDACalcIC(ida_mem (?), icopt, tout1, epicfac, maxnh, maxnj, maxnit, lsoff, steptol)