[Python] Cython e file header

Pietro Battiston me a pietrobattiston.it
Lun 13 Dic 2010 22:46:42 CET


Il giorno lun, 13/12/2010 alle 22.31 +0100, Pietro Battiston ha scritto:
> Salve,
> 
> sto muovendo i miei primissimi passi con cython (per giunta anni dopo
> avere scritto per l'ultima volta qualche riga di C) e, mentre finché
> seguivo pari pari il manuale l'ho trovato meraviglioso, mi sono
> paralizzato sull'utilizzo di un header non di sistema. Sento che la
> soluzione sarà qualcosa di semplicissimo, ma non so che pesci pigliare.
> 
> Questi sono i miei file:
> 
> 
> ########### ilc.h ######################################################
> int pippo(int);
> ########### ilc.h ######################################################
> 
> 
> ########### ilc.c ######################################################
> #include <stdio.h>
> #include "ilc.h"
> 
> void main()
> {
> pippo(3);
> }
> 
> int pippo(int numero)
> {
> printf("ciao\n");
> }
> ########### ilc.c ######################################################
> 
> 
> ########### prova.pyx ##################################################
> cdef extern from "ilc.h":


Tra l'altro, se nella riga qui sopra rimpiazzo "ilc.h" con "ilc.c",
allora (ho qualche warning in compilazione, ma) funziona.
Però tenderei a non considerarla una soluzione.
Giusto?

Pietro


>     int pippo(int)
> 
> def saluta(numero):
>     print pippo(3)
> ########### prova.pyx ##################################################
> 
> 
> ########### setup.py ##################################################
> from distutils.core import setup
> from distutils.extension import Extension
> from Cython.Distutils import build_ext
> 
> ext_modules = [Extension("prova", ["prova.pyx"])]
> 
> setup(
>   name = 'App di prova',
>   cmdclass = {'build_ext': build_ext},
>   ext_modules = ext_modules
> )
> ########### setup.py ##################################################
> 
> 
> Se do il comando "python setup.py build_ext --inplace" la compilazione
> sembra funzionare perfettamente, ma se poi do un "python -c 'import
> prova'" ottengo:
> 
> Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> ImportError: ./prova.so: undefined symbol: pippo
> 
> 
> 
> Qualche dritta?
> 
> grazie
> 
> Pietro
> 
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python




Maggiori informazioni sulla lista Python