有什么方法可以使用 cffi 提取胶囊的内容并将其转换为可以发送到 C 代码中的 voidptr 吗?
背景信息——numpy 数组可以给你一个包含一个非常方便的结构的胶囊,即PyArrayInterface。我认为 PyPy 尚不存在胶囊,所以答案可能是否定的,但我相信未来包含适用于所有 python 版本的胶囊,所以我希望答案是肯定的 :)。
有什么方法可以使用 cffi 提取胶囊的内容并将其转换为可以发送到 C 代码中的 voidptr 吗?
背景信息——numpy 数组可以给你一个包含一个非常方便的结构的胶囊,即PyArrayInterface。我认为 PyPy 尚不存在胶囊,所以答案可能是否定的,但我相信未来包含适用于所有 python 版本的胶囊,所以我希望答案是肯定的 :)。
我不这么认为。Capsules 是一些 CPython C 扩展模块传递指针的一种方式;通常,在两个不同的 C 扩展模块之间。如果你用 CFFI 版本替换这些模块之一,你就会松懈:没有官方方法可以从 Python 中获取“void *”值,无论是否使用 CFFI。看起来这将是一个有效的增强。随时在此处打开功能请求:
https://bitbucket.org/cffi/cffi/issues?status=new&status=open