小编Boc*_*com的帖子

在Python中为C库创建包装器

我正在尝试为FLAC创建自己的包装器,以便我可以在自己的Python代码中使用FLAC.

我首先尝试使用ctypes,但它显示了一个非常奇怪的库接口,例如FLAC流和文件的所有init函数都成为一个函数,没有关于如何初始化它的真实信息.特别是因为它想要引用流解码器,但Python无法存储指针(BZZZT!),因此我无法将指针存储到流解码器.不同的init函数具有不同数量的参数并且一些参数类型不同也没有帮助.它还有很多枚举和结构,我不知道如何将它们放入我的代码中.

我一直在研究Pyrex,但是我有点遇到了与指针相同的问题,但我认为我已经解决了它的问题.该文件也不小,甚至还不完整.

所以我正在寻找可以帮助我更好地理解上述方法的替代方案或指南.如果我能得到推荐和/或帮助,那将会非常有帮助.

c python

5
推荐指数
2
解决办法
6304
查看次数

Python ctypes和函数指针

这与我的另一个问题有关,但我觉得我应该在一个新问题中提出这个问题.

基本上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永远不会被程序员实例化,只能从初始化函数和处理函数中调用.我必须自己编写回调函数,但问题是我不知道怎么做,所以如果有人知道我应该怎么做,然后一些帮助将不胜感激.

python ctypes function-pointers

1
推荐指数
1
解决办法
9325
查看次数

标签 统计

python ×2

c ×1

ctypes ×1

function-pointers ×1