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