Python ctypes和函数指针

Boc*_*com 1 python ctypes 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)
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是实施.FLAC__Frame永远不会被程序员实例化,只能从初始化函数和处理函数中调用.我必须自己编写回调函数,但问题是我不知道怎么做,所以如果有人知道我应该怎么做,然后一些帮助将不胜感激.

Ber*_*Ber 5

根据ctypes回调文档,您可以定义python函数

def my_callback(a, p, frame, p1, p2)
    pass
Run Code Online (Sandbox Code Playgroud)

然后创建一个指向C可调用函数的指针,如下所示:

callback = write_callback_prototype(my_callback)
Run Code Online (Sandbox Code Playgroud)

然后可以将此函数指针传递给FLAC