我正在为野牛解析器开发python包装器。基本上我加载一个已编译的共享库,然后从该库中调用一个函数。
完成后,所述函数返回一个PyObject *,一个python对象。我的问题是,当我尝试在我的python代码中“使用”返回的值时,它被解释为int。只是注意,int的值与实际存储python对象的内存地址相匹配。所以我认为python对象是正确返回的,问题是python如何解释返回值。
基本上我有以下内容:
self.engineLib = cdll.LoadLibrary(self.bisonEnginePath)
return self.engineLib.do_parse(py_object(self), py_object(read), py_object(self._handle), py_object(self.report_syntax_error), c_int(debug))
我的库中的“do_parse”方法如下:
PyObject *do_parse(PyObject *parser, PyObject *read_method, PyObject *handle_method, PyObject* syntax_error_method, int debug) {
(...)
return context.result; //The PyObject* is stored in context.result
}
我该怎么做?