Bonjour.
Voilà maintenant je cherche à appeler des variables créer dans python avec du C.(L'inverse de Swig en faite).
J'ai utiliser pour comprendre le processus l'exemple donné par pfeuh dans un post intitule :
Résolu] [SWIG] dialogue entre code C et code python
dmichel (8ième en partant du bas du forum).
j'ai juste remplace #include "D:\Python24\include\Python.h" par #include "D:\Python25\include\Python.h"
Lorsque je compile en mode Deubug avec VS2008, j'ai le message d'erreur suivant : 1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'python25_d.lib'
Lorsque je compile en mode Release j'obtiens : 1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'python25.lib'
De plus je ne comprends pas dans son code en C, comment VS peux aller chercher le fichier python_sub.py (voir bas de page).
L'invoquation de #include "D:\Python25\include\Python.h" suffit il pour connaitre l'acces au .py
Mes recherches google sur le pb de 'python25_d.lib' me disent qu'il faut créer soit même en mode debud le .py. Je ne comprends pas la signification de cela.
Auriez vous déjà eu le même problème?
Merci.
Le code est le suivant : test_python.c
Le code python : python_sub.py#include <stdio.h>
#include "D:\Python25\include\Python.h"
PyObject *mymod, *func, *pyparams, *retval;
int CallPythonInc(int myint){
int js;
func = PyObject_GetAttrString(mymod, "PythonInc");
pyparams = Py_BuildValue("(l)", myint);
retval = PyEval_CallObject(func,pyparams);
PyArg_Parse(retval, "I",&js);
return js;
}
int CallPythonGet(void){
int js;
func = PyObject_GetAttrString(mymod, "PythonGet");
retval = PyEval_CallObject(func,NULL);
PyArg_Parse(retval, "l",&js);
return js;
}
int main(void){
int _result, _testvar = 1536;
Py_Initialize();
mymod = PyImport_ImportModule("python_sub");
_result = CallPythonGet();
printf ("Python global var:%u\n",_result);
_result = CallPythonInc(_testvar);
printf ("Initial value:%u Incremented value:%u\n",_testvar,_result);
Py_Finalize();
return 0;
}
pythonvar = 123456789;
def PythonInc(myint):
return myint + 1
def PythonGet():
global pythonvar
return pythonvar
Partager