这是到我的其他问题有关,但我觉得我应该问在一个新的问题。

基本上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

和假装它已经定义,并不在乎,因为你只需要指向它,这基本上是在内存中的位置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top