Corriendo bajo el supuesto de que el archivo C .h contiene solo #defines (y por lo tanto no tiene nada externo para vincular), entonces lo siguiente funcionaría con swig 2.0 (http://www.swig.org/) y Python 2.7 (probado). Supongamos que el archivo que contiene se define simplemente se llama just_defines.h que el anterior:
#define FOO_A 0x3
#define FOO_B 0x5
continuación:
swig -python -module just just_defines.h ## generates just_defines.py and just_defines_wrap.c
gcc -c -fpic just_defines_wrap.c -I/usr/include/python2.7 -I. ## creates just_defines_wrap.o
gcc -shared just_defines_wrap.o -o _just.so ## create _just.so, goes with just_defines.py
Uso:
$ python
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import just
>>> dir(just)
['FOO_A', 'FOO_B', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_just', '_newclass', '_object', '_swig_getattr', '_swig_property', '_swig_repr', '_swig_setattr', '_swig_setattr_nondynamic']
>>> just.FOO_A
3
>>> just.FOO_B
5
>>>
Si el archivo .h también contiene puntos de entrada, a continuación, necesita vincular una biblioteca (o más) para resolver esos puntos de entrada. Eso hace que la solución sea un poco más complicada, ya que es posible que tengas que buscar las librerías correctas. Pero para un "caso de definición justa" no tiene que preocuparse por esto.
posible duplicado de [confiablemente convertir macros C preprocesador para código Python] (http://stackoverflow.com/questions/2654329/reliably-converting-c-preproce ssor-macros-to-python-code) –
Creo que este es un duplicado de http://stackoverflow.com/questions/2654329/reliably-converting-c-preprocessor-macros-to-python-code –
@MattiLyra - Tal vez . Pero dado que esa pregunta no tiene respuestas actualmente, este no es un punto particularmente útil. –