Exécuter un code python en C++
Bonjour a tous
Bon je poste ici car je ne savais pas si il fallait mettre ce post dans le forum Python.
Donc mon problème est que je cherche a utilisé Python au sein d'un code C++
afin que l'utilisateur puisse écrire du code python au sein de mon application.
Par exemple, si l'utilisateur rentre un code simple comme ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
varA="toi"
varB=25
if str(varB).isdigit() and varB>0:
str="Bonjour {0} tu as {1} ans".format(varA,varB)
print (str)
str=str.replace("Bonjour", "Hello")
str=str.replace("tu as", "you are")
str=str.replace("ans", "")
print(str)
else:
print ("Error") |
Je voudrai récupérer la sortie ou si il y a une erreur de syntaxe, le traceback.
Donc pour l'instant voici le code que j'ai produit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#include "PyTrParser.h"
PyTrParser::PyTrParser()
{
Py_Initialize();
pyMainModule =PyImport_AddModule("__main__");
main_dict =PyModule_GetDict (pyMainModule);
}
PyTrParser::~PyTrParser()
{
Py_Finalize();
}
PyObject* PyTrParser::execute(const char* code)
{
return PyRun_String(code, 0, main_dict, main_dict);
} |
le main:
Code:
1 2 3 4 5 6 7 8
|
PyTrParser *parser=new PyTrParser;
string code="2+3";
PyObject * returnObj=parser->execute(code.c_str());
int i=0;
delete returnObj;
delete parser; |
Mais celui-ci léve une exeception :
Code:
System.AccessViolationException
1. Savez-vous si je part dans la bonne direction ?
2. Avez vous des bon tuto sur ce sujet ? (car la doc est un peux limite)
3. Savez-vous d'où viens mon erreur et pourquoi ?
Je vous remercie d'avance pour votre aide ;)