【python-C相互调用】关于python通过.so调用C函数来读取python里某个key的值并进行处理,一直无法将dict传到C中,求助
1. 首先是C中的包装函数定义
static PyObject *
Extest_reverse(PyObject *self, PyObject *args,PyObject *keyds)
{
//PyObject* keyds = PyDict_Keys(args);
static char* kwlist[] = {"name",NULL};
char *name; //将dict中的name里的值读到char* name中
PyObject* retval;
if(PyArg_ParseTupleAndKeywords(args,keyds,"isi",kwlist,&name))
{
retval = (PyObject *)Py_BuildValue("i",1);
printf("%s",name);
free(name);
return retval; //成功读取返回1
}
else
retval = (PyObject *)Py_BuildValue("i",0);
return retval; //未读取返回0
}
static PyMethodDef
ExtestMethods[] =
{
{"reverse",(PyCFunction)Extest_reverse,METH_VARARGS | METH_KEYWORDS,"reverse"},
};
void initwmf()
{
Py_InitModule("wmf",ExtestMethods);
}
- python里的调用 .so已生成,将python 中定义的dict作为参数输入
import wmf
test = {'name':'wmf'}
result = wmf.reverse(test)
print(result)
返回结果一直是0,未读到对应key值的value,进一步查验返现,test这个dict就没有传进去,传入参数是NULL。求助定义的问题,还是调用的问题?如何解决