Appel de fonctions Python à partir de C++
Je suis en train de réaliser des appels de fonctions Python à partir de C++. J'ai pensé qu'il pourrait être atteint grâce à des pointeurs de fonction, mais il ne semble pas être possible. J'ai été en utilisant boost.python
pour accomplir cette tâche.
Dire qu'il n'y est une fonction définie dans Python:
def callback(arg1, arg2):
#do something
return something
Maintenant j'ai besoin de passer à cette fonction de C++, de sorte qu'il peut être appelé à partir de là. Comment puis-je écrire le code C++, en utilisant boost.python
pour y parvenir?
Vous devez vous connecter pour publier un commentaire.
Si il pourrait avoir n'importe quel nom:
Passer à une fonction qui prend un
boost::python::object
.Si c'est dans un seul espace de noms connus avec un nom conforme:
bp::object
aoperator()
défini, de sorte que vous l'appelez comme toute fonctionPas la moindre idée. Mais vous pouvez utiliser
PyObject_Call()
de l'appeler une fois que vous avez la fonction de l'objet.boost::python::object
, vous pouvez simplement utiliser sonoperator()
l'appeler.Je n'ai pas utilisé avant, mais le manuel de référence a une section appelée L'appel de Python Fonctions et de Méthodes de qui semble montrer comment faire cela.
J'ai utilisé
PyRun_SimpleString("myFunction()")
rapide hack, comme mon nom de la fonction est connue, n'a pris aucune args et vécu dans le__main__
espace de noms. Remarque vous en plus besoin d'obtenir un verrou GIL si vous êtes en multi-thread.