Comment puis-je étendre un interpréteur incorporé avec du code C++? J'ai intégré l'interpréteur et je peux utiliser boost.python pour faire un module chargeable (comme dans une bibliothèque partagée) mais je ne veux pas que la bibliothèque circule parce que je veux directement m'interfacer avec mon application C++. Désolé si mon écriture est un peu incohérente.Comment puis-je étendre un interpréteur python intégré avec des fonctions C++?
0
A
Répondre
2
Au moins pour les interpréteurs 2.x: vous écrivez vos méthodes en tant que code de style C avec les valeurs de retour PyObject *. Ils regardent tous comme essentiellement:
PyObject* foo(PyObject *self, PyObject *args);
Ensuite, vous collectez ces méthodes dans un tableau statique de PyMethodDef:
static PyMethodDef MyMethods[] =
{
{"mymethod", foo, METH_VARARGS, "What my method does"},
{NULL, NULL, 0, NULL}
};
Ensuite, une fois que vous avez créé et initialisé l'interprète, vous pouvez ajouter ces méthodes « dans » l'interprète par ce qui suit:
Py_InitModule("modulename", MyMethods);
vous pouvez vous référer maintenant à vos méthodes via modulename que vous avez déclarés ici.
Quelques infos supplémentaires ici: http://www.eecs.tufts.edu/~awinsl02/py_c/
Merci! Je regardais ce genre de choses depuis des lustres, ça ne ressemblait pas à ce que je voulais. Maintenant que vous l'avez dit comme ça, mon esprit chétif peut comprendre! Je vous remercie! – user478250