在Python中为C库创建包装器

Boc*_*com 5 c python

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

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

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

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

mta*_*c85 10

Python无法存储指针,因此我无法将指针存储到流解码器

ctypes有指针,ctypes可用于包装现有的C库.只需一个提示,您需要将所有相关C结构包装/重写为ctypes.Structure.请查看示例:code.google.com/p/pyxlib-ctypescode.google.com/p/pycairo-ctypes.更多信息如何在http://docs.python.org/library/ctypes.html上映射函数/过程及其argtypesrestype

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

如果你想要干净的语法,cython可能就是你所需要的.www.cython.org

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

另一方面可以使用swig,但如果你不习惯它会更复杂.www.swig.org


Pie*_*rre 5

您有没看过http://www.swig.org/:

SWIG是一个软件开发工具,它将用C和C++编写的程序与各种高级编程语言连接起来.