【发布时间】:2017-01-07 14:55:51
【问题描述】:
要组合两个独立的 C 编写模块,我必须将函数指针存储在双精度数组中(将其传递给模块),然后再将其转换回来。 我试图坚持https://stackoverflow.com/a/35824907/4859499 但是,我无法在 Cython 中弄清楚:
cdef void* ptr = getTestPtr() # getting the function pointer
cdef TEST mytest = <TEST> ptr # testing the function pointer
mytest() # still works here
cdef double** dPptr = <double**> ptr
cdef double* dPtr = dPptr[0]
doubleArrayStorage[0] = dPtr[0] #storing in a given double array at index 0
################################################
# starting of back conversion:
cdef double* dPtr2 = &doubleArrayStorage[0]
cdef void** Pptr2 = <void**> dPtr2
cdef void* ptr2 = Pptr2[0]
cdef TEST mytest2 = <TEST> ptr2
mytest2() #SEGMENTATION FAULT !
谢谢!
【问题讨论】: