[Python] Cython e file header

Pietro Battiston me a pietrobattiston.it
Lun 13 Dic 2010 22:31:16 CET


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":
    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



Maggiori informazioni sulla lista Python