Extraire la valeur de retour d'une fonction Python appelée en C/C
L'appel d'une fonction Python personnalisée à partir de C/C permet des fonctionnalités étendues, mais extraire la valeur de retour peut être difficile. Voici une solution utilisant l'API Python C.
Le module Python
Créer un module Python (mytest.py) :
import math def myabs(x): return math.fabs(x)
Le code C/C
Importer l'interpréteur python3 en C/C (test.cpp) :
#include <Python.h> int main() { Py_Initialize(); PyRun_SimpleString("import sys; sys.path.append('.')");
Importation et appel de la fonction
PyObject* myModuleString = PyString_FromString("mytest"); PyObject* myModule = PyImport_Import(myModuleString);
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
PyObject* myResult = PyObject_CallObject(myFunction, args);
Extraire la valeur de retour
Convertir le résultat en un double :
double result = PyFloat_AsDouble(myResult);
Utilisation
Dans votre code C/C, vous pouvez désormais utiliser la valeur de retour extraite (résultat) :
printf("Absolute value: %f\n", result);
Remarque : Pensez à vérifier d'éventuelles erreurs lors de ces opérations. Pour plus de détails sur la C-API, reportez-vous à la documentation officielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!