使用变量缓冲区从C++调用 python,通过回调



我设法编写了代码,这样我就可以通过回调从C++调用python。 使用了ctypes。

Python 中的回调设置是这样的:

proto = ctypes.CFUNCTYPE( ctypes.c_char_p, ctypes.POINTER( ctypes.c_char))
def parser( query, result):
   # Parsing code
fp = proto( parser_func)

这有效,但我正在从C++传递一个固定的 64k 缓冲区。这是不可接受的:我需要处理一个可变缓冲区。我们想出的唯一解决方案是添加另一个回调,其中我们返回一个 python 对象的句柄。然后,我们将其传递给解析器回调。然后也许我们需要第三个函数,以便Python可以回收内存,或者类似的东西。

如果有人有想法,请寻找最简单的方法来做到这一点

我最终实现了两个回调。 一个计算长度(通过解析查询并返回长度。 另一个解析与第一个完全相同,但通过客户端现在可以提供的缓冲区返回解析输出,知道长度。 它效率不高,但它的工作方式与我尝试过的其他一切不同。 感谢您的建议

最新更新