C++ avec SWIG - afficher des messages d'erreurs
Bonjour à tous !
J'ai un programme C++ et j'externalise une partie du code avec des scripts. Pour cela j'utilise le wrapper SWIG avec le langage Python.
J'arrive à appeler des fonctions de mon script dans le programme C++ mais je n'ai aucun message en cas d'erreur dans une des fonction.
si par exemple dans mon script j'ai une fonction toute simple "ajouter" qui prend un nombre et affiche ce nombre +5
Code:
1 2 3
|
def ajouter(i):
print i+5 |
si je lance cette fonction avec Python Shell, et qu'en paramètre je met autre chose qu'un entier, par exemple un string, il m'affiche bien une erreur :
Code:
1 2 3 4 5 6 7 8 9
|
>>> ajouter("ok")
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
ajouter("ok")
File "D:\Dev\lib\dtSwigPython\scriptSwig.py", line 6, in ajouter
print i+5
TypeError: cannot concatenate 'str' and 'int' objects |
Mais si j'appelle cette fonction dans mon programme C++, il ne m'affiche pas d'erreur, il se contente d'ignorer l'appel à la fonction.
Je cherche donc un moyen de pouvoir débugger mon script python quand je le lance depuis le code C++.
Pour info, voila comment j'appelle les fonctions du script dans le code C++ :
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
|
Py_Initialize();
m_pyName = PyString_FromString("scriptSwig");
m_pyModule = PyImport_Import(m_pyName); // Load the module object
if(m_pyModule == NULL) std::cout<< "ERROR import script" << std::endl;
m_pyDict = PyModule_GetDict(m_pyModule); // pDict is a borrowed reference
if(m_pyDict == NULL) std::cout<< "ERROR Dico" << std::endl;
m_pyFunc = PyDict_GetItemString(m_pyDict, fctName); // pFunc is also a borrowed reference
if(m_pyFunc == NULL) std::cout<< "ERROR function" << std::endl;
if (PyCallable_Check(m_pyFunc))
{
PyObject_CallFunction(m_pyFunc, NULL); // lancement de la fonction contenu dans le script Python
}
else
PyErr_Print();
// Clean up
Py_DECREF(m_pyModule);
Py_DECREF(m_pyName);
Py_Finalize(); |
Merci d'avance ;)