Преобразование файлов заголовков C ++ в Python - PullRequest
8 голосов
/ 17 декабря 2008

У меня есть заголовок C ++, который содержит операторы #define, Enums и Structures. Я попытался с помощью сценария h2py.py, который входит в состав Python, безрезультатно (за исключением предоставления мне преобразованных #defines). Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

11 голосов
/ 17 декабря 2008

Я не знаю h2py, но вы можете посмотреть на 'ctypes' и 'ctypeslib'. ctypes входит в состав Python 2.5+ и предназначен для создания двоичной совместимости с c-структурами.

Если вы добавите ctypeslib, вы получите подинструмент под названием codegen, который имеет скрипт «h2xml.py» и «xml2py.py», комбинация которых автоматически сгенерирует искомый код Python для заголовков из C ++.

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

h2xml.py потребует другого инструмента под названием gccxml: http://www.gccxml.org/HTML/Index.html

Лучше всего проверить (через CVS) последнюю версию gccxml и собрать ее самостоятельно (на самом деле это легче сделать, чем было сказано). Предварительно упакованная версия старая.

3 голосов
/ 11 мая 2009

Только что найдено pycparser . Может быть полезным.

1 голос
/ 17 декабря 2008

Насколько я могу судить, h2py.py не предназначен для преобразования чего-либо, кроме #define макросов. Я наткнулся на cppheaderparser , который может стоить посмотреть.

0 голосов
/ 17 декабря 2008

Откуда вы взяли, что h2py имеет какое-либо отношение к структурам или перечислениям?

Из источника

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

Слова 'enum' и 'struct' никогда не появляются в модуле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...