Wird unter der Annahme ausgeführt, dass die C .h-Datei nur #defines enthält (und daher nichts mit externem Link zu verknüpfen ist), dann würde Folgendes mit swig 2.0 (http://www.swig.org/) funktionieren Python 2.7 (getestet). Angenommen, die Datei nur enthält, definiert ist benannt just_defines.h wie oben:
#define FOO_A 0x3
#define FOO_B 0x5
Dann:
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
Verbrauch:
$ 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
>>>
Wenn die .h-Datei auch Einstiegspunkte enthält, dann Sie müssen eine Verbindung zu einer Bibliothek (oder mehreren) herstellen, um diese Einstiegspunkte zu beheben. Das macht die Lösung ein wenig komplizierter, da Sie möglicherweise die richtigen Bibliotheken suchen müssen. Aber für einen "klar definierten Fall" müssen Sie sich keine Sorgen machen.
möglich Duplikat [Reliably C Präprozessormakros zu Python-Code Umwandlung] (http://stackoverflow.com/questions/2654329/reliably-converting-c-preproce ssor-macros-to-python-code) –
Ich denke, das ist ein Duplikat zu http://stackoverflow.com/questions/2654329/reliably-converting-c-preprocessor-macros-to-python-code –
@ MattiLyra - Vielleicht . Aber da diese Frage derzeit keine Antworten hat, ist dies kein besonders hilfreicher Punkt. –