Python中的ctypes和函数指针
-
22-08-2019 - |
题
这是到我的其他问题有关,但我觉得我应该问在一个新的问题。
基本上FLAC使用函数指针回调,并用ctypes的实现回调,可以使用CFUNCTYPE
原型它们,然后使用prototype()
函数来创建它们。
我有这样做的问题是,我想,我想创建我的回调函数本身(我不显示我所重新创建的结构中,FLAC__Frame是一个结构):
write_callback_prototype = CFUNCTYPE(c_int, c_void_p,
POINTER(FLAC__Frame),
POINTER(c_int32), v_void_p)
这我的问题是实现。 FLAC__Frame永远不会被程序员实例化,它只是从初始化函数调用,并且处理functions.I必须编写回调函数自己,但他的问题是,我不知道我会怎么做,所以如果有人知道我应该怎么做,然后一些帮助将不胜感激。
解决方案
按照 ctypes的回调文档可以定义蟒功能
def my_callback(a, p, frame, p1, p2)
pass
,然后创建一个指向这样一个C的可调用函数:
callback = write_callback_prototype(my_callback)
然后,此函数指针可以传递到FLAC
其他提示
这我的问题是实现。 FLAC__Frame永远不会被程序员实例化,它只是从初始化函数调用,并且处理functions.I必须编写回调函数自己,但他的问题是,我不知道我会怎么做,所以如果有人知道我应该怎么做,然后一些帮助将不胜感激。
在这种情况下,只需使用:
import ctypes
class FLAC__Frame(ctypes.Structure):
pass
和假装它已经定义,并不在乎,因为你只需要指向它,这基本上是在内存中的位置。
不隶属于 StackOverflow