1
我设法编写代码,以便可以通过回调从C++调用python。使用了ctypes。从C++调用python,通过回调,使用变量缓冲区
在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可以回收内存,或者类似的东西
寻找做到这一点最简单的方法,如果任何人有想法
您可以尝试在[Cython](http://cython.org)中编写助手函数。这可以从C中调用,但它可以使用Python对象,而无需手动调整refcounts等。 – Kevin 2015-01-20 20:09:26