繁体   English   中英

Python ctypes和函数指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM