compiler un fichier.c pour l'appeler à partir d'un fichier python
Bonjour ,
est ce quelqu'un peut m'aider je viens de commencer sur python et j'essaye d'intégrer une fonction en c et l'appeler à partir d'un fichier .py en passant par swig ?
j'ai trouvé un exemple sur le net sur l'@ : http://web.univ-pau.fr/~bruel/Enseig...thon/swig.html
j'ai essayé d'appliquer cet exemple sous python avec swig
en mettant :
une fonction somme dans un fichier somme.c et le descriptif de la fonction dans un fichier somme.h et un fichier somme.i sous swig un fichier Makefile et un fichier somme.py pour executer ma fonction
voila le contenu de chaque fichier :
1/somme.c :
#include <stdio.h>
#include 'somme.h'
int somme(int a, int b)
{return(a+b);}
2/ somme.h :
#include <stdio.h>
int somme(int a, int b);
3/ somme.i :
%module somme
%{ #include <stdio.h>
#include "somme.h"
%}
/* puis, on déclare, comme dans un fichier .h mais en "extern", les variables, les fonctions, */
/* les méthodes du .cxx correspondant */
extern int somme(int a, int b);
4/ Makefile :
#permet de ne changer ces options qu'une seule fois en début de programme
MAIN=somme
chemin=-I/usr/include/python1.5 -I/usr/lib/python1.5/config -DHAVE_CONFIG_H
compile=g++
option1=-c++
option2=-shadow
#création du fichier (nom du fichier)module.so ou (nom du fichier)cmodule.so en présence de classe
$(MAIN)$module.so:$(MAIN).o $(MAIN)_wrap.o $(compile) -shared $(MAIN).o $(MAIN)_wrap.o -o $(MAIN)$module.so
#la commande suivante permet d'obtenir le fichier (nom du fichier).o
$(MAIN).o:$(MAIN).cxx $(compile) -c $(MAIN).cxx $(chemin)
#la commande suivante permet d'obtenir le fichier (nom du fichier)_wrap.o
$(MAIN)_wrap.o:$(MAIN)_wrap.c $(compile) -c $(MAIN)_wrap.c $(chemin)
#la commande suivante permet d'obtenir le fichier (nom du fichier)_wrap.c
$(MAIN)_wrap.c:$(MAIN).i swig -python $(option1) $(option2) $(MAIN).
quand j'execute la commande make python somme.py il m'affiche l'erreur :
=> dev2@dev2:~/Fltk/pyFltk2-1.0.0b1/swig$ make python sommme.py
make: *** No rule to make target `python'. Stop.