2011-02-17 9 views
16

Por ejemplo, sería bueno poder hacer esto:¿Hay alguna razón por la cual ctypes.CDLL de Python no pueda generar automáticamente restype y argtypes desde archivos de cabecera en C?

from ctypes import CDLL 
mylib = CDLL('/my/path/mylib.so',header='/some/path/mylib.h') 

en lugar de

from ctypes import * 
mylib = CDLL('/my/path/mylib.so') 
mylib.f.restype = c_double 
mylib.f.argtypes = [c_double, c_double] 
mylib.g.restype = c_int 
mylib.g.argtypes = [c_double, c_int] 

Mi experiencia con el pitón sugiere que sea algo muy cercano a esto se ha hecho ya y yo simplemente no he podido encontrarlo, o que hay una buena razón para no hacerlo. ¿Alguno de estos es el caso?

Respuesta

11

me hice la misma pregunta y antes de viajar por ese camino demasiado lejos, me encontré con ctypesgen:

http://code.google.com/p/ctypesgen/

Que se encargará de todo esto para usted, aunque tendrá que hacer una poco aprendizaje al frente. Usamos ctypesgen para generar una versión de los enlaces de Python para los enlaces de Subversion. Funciona muy bien.

+4

Para mí, parece más tonto poder importar los encabezados directamente, en lugar de tener que generar archivos python, y luego importarlos. – lvella

Cuestiones relacionadas