[英]Python ctypes and function pointers
这与我的其他问题有关 ,但我觉得我应该在一个新问题中提出。
基本上,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永远不会被程序员实例化,只能从初始化函数和处理函数中调用。我必须自己编写回调函数,但是他的问题是我不知道该怎么做,所以如果有人知道我该怎么做,那么将不胜感激。
根据ctypes回调文档,您可以定义python函数
def my_callback(a, p, frame, p1, p2)
pass
然后创建一个指向C可调用函数的指针,如下所示:
callback = write_callback_prototype(my_callback)
然后可以将此函数指针传递给FLAC
我的问题是实施。 FLAC__Frame永远不会被程序员实例化,只能从初始化函数和处理函数中调用。我必须自己编写回调函数,但是他的问题是我不知道该怎么做,所以如果有人知道我该怎么做,那么将不胜感激。
在这种情况下,只需使用:
import ctypes
class FLAC__Frame(ctypes.Structure):
pass
并假装它已经定义了,不必在意,因为您只需要指向它的指针,该指针基本上位于内存中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.