Appel d'un script Python dans C++
:salut:
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
Code:
pFunc = PyObject_GetAttrString(pModule, argv[2]);
Voici ce que j'ai actuellement :
test1.cpp
Code:
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;
} |
test.py
Code:
1 2
| def functTest():
print("contrôle depuis Python : ok"); |
test1.pro
Code:
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/ |
Je suis assez ennuy� car il s'agit de la doc officielle et pourtant �a merdouille... :aie:
Quelqu'un aurait-il une id�e ?
D'avance merci
++
J