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

时间:2015-01-20 20:02:19

标签: python ctypes

我设法编写代码,以便我可以通过回调从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可以回收内存,或类似的东西

如果有人有想法,寻找最简单的方法

1 个答案:

答案 0 :(得分:0)

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