Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo pasar dict en python como parámetro a la función c en .so para lograr una llamada interactiva de python-C

Cómo pasar dict en python como parámetro a la función c en .so para lograr una llamada interactiva de python-C

#include?lt;stdio.hgt;

#include?lt;stdlib.hgt;

#include?lt;Python.hgt;

¿estático? ¿PyObject?*

wmf_ reverse(PyObject?*self, ?PyObject?*args, ?PyObject?*kwargs)?{

estático?{"nombre",?NULL};

char?*name?=?NULL;

PyObject?*retval?=?NULL;?

//?Pregunta 1:?Toma solo uno Cadena, el formato debe ser "s"

/?gt;gt;gt;?if(PyArg_ParseTupleAndKeywords(args,keyds, "isi",kwlist,amp;name))

if(PyArg_ParseTupleAndKeywords(args,?kwargs,?"s",?kwlist,?&name))?{

retval?=?(PyObject?*)Py_BuildValue("i", 1) ;

printf("s\n",?name);

//?Pregunta 2: Sin autorización

/? gt; gratis(nombre);?

}?else?{

retval?=?(PyObject?*)Py_BuildValue("i", 0);

}

return?retval;

}?

static?PyMethodDef

wmf_methods[] =?{

{"reverse",(PyCFunction)wmf_reverse,?METH_VARARGS?|?METH_KEYWORDS,?"reverse"},

//?Pregunta 3: La tabla de definición de métodos debe terminar con un registro vacío.

{NULL,?NULL,?0,?NULL},

};

//?Pregunta 4: Módulo no definido

static?struct?PyModuleDef

wmf_module?=?{

PyModuleDef_HEAD_INIT,

"wmf",?/* nombre del módulo*/

NULL, /* Documentación del módulo, puede ser NULL */

-1, ?/* -1 si el módulo guarda el estado en variables globales. */

wmf_methods,

};

//? Pregunta 5: La función de entrada debe declararse como: PyMODINIT_FUNC

PyMODINIT_FUNC

p>

PyInit_wmf(void)?{

//?Pregunta 6: Py_InitModule se usa para inicializar el módulo, no un método. Entonces pasar la definición del método es incorrecto.

//?Además, python2.x usa Py_Init_module y python3.x cambia a PyModule_Create.

//?Existen diferencias sutiles entre los dos, preste atención. Aquí estoy usando python3.x.

// Py_InitModule("wmf", ExtestMethods);

PyObject?*m;

m?=? (amp; wmf_module);

si?{

regresar?NULL;

}

regresar?