2008-12-17 25 views
8

Tengo un encabezado C++ que contiene instrucciones #define, enumeraciones y estructuras. He intentado utilizar el script h2py.py que se incluye con Python inútilmente (excepto que me dieron las #defines convertidas). Cualquier ayuda sería muy apreciada.Convertir archivos de encabezado C++ a Python

+0

¿Qué quieres lograr? –

Respuesta

11

No sé h2py, pero es posible que desee ver 'ctypes' y 'ctypeslib'. ctypes se incluye con python 2.5+, y está dirigido a la creación de compatibilidad binaria con c-structs.

Si agrega ctypeslib, obtiene una subherramienta llamada codegen, que tiene una secuencia de comandos 'h2xml.py', y una 'xml2py.py', cuya combinación generará automáticamente el código python que usted es buscando desde encabezados C++.

ctypeslib: http://pypi.python.org/pypi/ctypeslib/0.5.4a

h2xml.py requerirá otra herramienta llamada gccxml: http://www.gccxml.org/HTML/Index.html

lo mejor es comprobar hacia fuera (a través de CVS) la última versión del gccxml y construir por sí mismo (en realidad más fácil hacer que dicha) La versión preempaquetada es antigua.

+1

Bajé este agujero de conejo para intentar obtener gccxml usando CVS. Fue casi imposible en Windows. Aquí hay una mejor manera de hacerlo. http://stackoverflow.com/questions/3840268/where-to-get-compiled-version-of-gccxml-on-windows. O aquí hay un enlace directo al proyecto: http://sourceforge.net/projects/ctypes/files/gccxml/ – phyatt

+0

Este es un buen punto de partida para generar código python a partir de un archivo .h: http: // code. google.com/p/ctypesgen/ – phyatt

1

Según lo que puedo decir, h2py.py no tiene la intención de convertir nada más que #define macros. Me encontré con cppheaderparser, que podría valer la pena mirar.

-1

¿De dónde sacaste la idea de que h2py tenía algo que ver con estructuras o enumeraciones?

Desde la fuente

# Read #define's and translate to Python code. 
# Handle #include statements. 
# Handle #define macros with one argument. 

'enumeración' Las palabras y 'struct' nunca aparecen en el módulo.

Cuestiones relacionadas