读书人

c/c++扩展python采用回调机制怎么

发布时间: 2012-06-12 14:21:25 作者: rapoo

c/c++扩展python,采用回调机制,如何回传函数
python官网中已详细说明如果在c/c++扩展中增加回调函数

我在实际调用过程中碰到两个问题

1.若传入回调函数的参数是字符串,那么PyEval_CallObject必返回NULL

2.回调函数的返回值必须是整型,如何从python的回调函数回传参数给c/c++扩展代码呢?

[解决办法]
计算出的'123'没办法返回,那么应该在py函数所属的模块下有个啥属性变量保持着,你用相关api函数取出转换...
[解决办法]
试试:

char* PyString_AsString(PyObject *string);
[解决办法]
/* CPPCode.cxx */
int main(...) {
for(int i = 0; i < numURLs; i++) {
// Python method returns a string
PyObject *pyValue = PyObject_CallMethod(pyObjectInstance, pyFunctionName, par1, par2....);
string valString = PyString_AsString(pValue);
// ... process string ...
}
}

/* PyObject.py */
class PyClass:
def PyFunction(...):
try: urlSock = urllib.urlopen(urlName)
except ...

while(...) :
dataStr = urlSock.readline()
# do some basic string processing....

return dataStr

读书人网 >perl python

热点推荐