如何使用 python cffi 从 capsule 中取出 voidptr?

How to get voidptr out of capsule using python cffi?

有什么方法可以使用 cffi 来提取 capsule 的内容并将其转换为我可以发送到 C 代码中的 voidptr 吗?

背景信息 -- numpy 数组可以为您提供一个包含非常方便的结构的胶囊,即 PyArrayInterface。我认为 PyPy 还没有胶囊,所以答案可能是否定的,但我相信未来包含所有 python 版本的胶囊,所以我希望答案是肯定的 :).

我不这么认为。胶囊是一些 CPython C 扩展模块传递指针的一种方式;通常,在两个不同的 C 扩展模块之间。如果您将其中一个模块替换为 CFFI 版本,您就会失去:没有官方方法可以从 Python 获取 "void *" 值,无论是否使用 CFFI。看起来这将是一个有效的增强。欢迎在此处提出功能请求:

https://bitbucket.org/cffi/cffi/issues?status=new&status=open