Je m'essaye aux appels d'un script Python dans un code C++ et je suis tombé sur la page suivante de la doc officielle de Python : http://docs.python.org/3/extending/e...pure-embedding
Malheureusement ça ne fonctionne pas comme voulu et je bloque notamment à la ligne
Voici ce que j'ai actuellement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pFunc = PyObject_GetAttrString(pModule, argv[2]);
test1.cpp
test.py
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #include <cstdlib> #include <iostream> #include <fstream> #include <Python.h> using namespace std; int main(int argc, char *argv[]) { PyObject *pName, *pModule, *pDict, *pFunc; PyObject *pArgs, *pValue; int i; if (argc < 3) { fprintf(stderr,"Usage: call pythonfile funcname [args]\n"); return 1; } Py_Initialize(); pName = PyUnicode_FromString(argv[1]); pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, argv[2]); if (pFunc && PyCallable_Check(pFunc)) { cout << "Appel de la fonction " << argv[2] << " du module " << argv[1] << " réussi" << endl; } else { cout << "Erreur lors de l'appel de la fonction " << argv[2] << " du module " << argv[1] << endl; } } // je m'arrête volontairement là car je ne parviens pas à passer cette étape. Py_Finalize(); return 0; }
test1.pro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 def functTest(): print("contrôle depuis Python : ok");
Je suis assez ennuyé car il s'agit de la doc officielle et pourtant ça merdouille...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SOURCES += main.cpp LIBS += -L /usr/lib/python3.3/config-3.3m-x86_64-linux-gnu -lpython3.3 INCLUDEPATH += -I /usr/include/python3.3m/
Quelqu'un aurait-il une idée ?
D'avance merci
++
J
Partager