Działa przy założeniu, że plik C.h zawiera tylko #definy (i dlatego nie ma nic zewnętrznego do połączenia z), a następnie będzie działać z plikiem swig 2.0 (http://www.swig.org/) i python 2.7 (testowany). Załóżmy, że plik zawierający tylko definiuje nazwie just_defines.h jak wyżej:
#define FOO_A 0x3
#define FOO_B 0x5
Następnie:
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
Zastosowanie:
$ 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
>>>
Jeśli plik .h zawiera również punkty wejścia, a następnie musisz połączyć się z pewną biblioteką (lub więcej), aby rozwiązać te punkty wejścia. To sprawia, że rozwiązanie jest nieco bardziej skomplikowane, ponieważ może być konieczne wyszukiwanie właściwych bibliotek. Ale dla "sprawiedliwego definiowania sprawy" nie musisz się o to martwić.
możliwe duplikat [niezawodnie konwersji makr preprocesora C kodu pytona] (http://stackoverflow.com/questions/2654329/reliably-converting-c-preproce ssor-macros-to-python-code) –
Myślę, że jest to duplikat http://stackoverflow.com/questions/2654329/reliably-converting-c-preprocessor-macros-to-python-code –
@MattiLyra - Być może . Jednak obecnie, gdy to pytanie nie ma odpowiedzi, nie jest to szczególnie pomocne. –