Ich habe ein Szenario, in dem ich einige Funktionen in C++ Klassen haben, und ich möchte, dass sie anrufen können, ein Python-Skript verwenden. Lassen Sie uns sagen, dass ich eine FunktionAufruf einer C++ Funktionen durch ein Python-Skript
void greet(_msg);
std::cout >> _msg >> std::endl;
Ich will es in der Lage sein müssen, rufen Trog einen Anruf benutzerdefinierte Python und übergeben Argumente, um es zum Beispiel
saySomething("Hello")
Als Py-Datei ich es will um die Greet-Funktion aufzurufen und "Hello" als Argument zu übergeben.
Ich weiß, es ist ein Thema, das gründlich diskutiert wurde, und ich habe einen Teil der Forschung über die Einbettung von Python in C++ getan, ich konnte Werte aus einem Python-Skript mit der Standard-Python/C-API lesen und ausführen eine Funktion in Python von C++ und pass Argument dazu, aber ich kann nicht scheinen, um zu verstehen, wie man dieses spezifische Ergebnis erreicht.
Ich habe mir ctypes und verschiedene Wrappin-Bibliotheken angeschaut wie boost: python oder swig, aber ich kann nicht zu verstehen scheinen, in welchem Grad sie mir helfen können, was ich will.
"Ausführen einer Funktion in Python von C++" Was meinst du damit? Wenn Sie C/C++ als Python-API maskieren möchten, können Sie die Grundregeln der Python-Bindungen für C/C++ anwenden. Es gibt auch die boost :: python-Bibliothek, die beim Schreiben der Python-API einfacher von C++ - Code aus gehandhabt werden kann. – user1797612
Entschuldigung, es war nicht klar - Was ich will, ist ein Python-Skript, das eine bestimmte Funktion einer C++ - Klasse aufruft, die Argumente übergeben kann. Mehr oder weniger wie eine GUI, sondern durch Python-Skripte anstelle von Schaltflächen. – leoncvlt
Sie suchen also http://docs.python.org/3.2/extending/extending.html oder boost :: python (wahrscheinlich einfacher), und auch die Antworten auf diese Frage können ein guter Ausgangspunkt http sein: //stackoverflow.com/questions/276761/exposing-ac-api-to-python. Wie auch immer, Sie wollen Python API für C++ Code generieren, das ist es, folgen Sie einfach dem offiziellen Handbuch oder verwenden Sie diese Bibliotheken. – user1797612