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:
Je voudrai récupérer la sortie ou si il y a une erreur de syntaxe, le traceback.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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")
Donc pour l'instant voici le code que j'ai produit:
le main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Mais celui-ci léve une exeception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
1. Savez-vous si je part dans la bonne direction ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.AccessViolationException
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
Partager