【发布时间】:2010-09-27 07:35:15
【问题描述】:
我有一个 C++ 标头,其中包含 #define 语句、枚举和结构。我尝试使用 Python 中包含的 h2py.py 脚本无济于事(除了给我转换的#defines)。任何帮助将不胜感激。
【问题讨论】:
标签: c++ python data-structures enums header
我有一个 C++ 标头,其中包含 #define 语句、枚举和结构。我尝试使用 Python 中包含的 h2py.py 脚本无济于事(除了给我转换的#defines)。任何帮助将不胜感激。
【问题讨论】:
标签: c++ python data-structures enums header
刚刚找到pycparser。可能有用。
【讨论】:
我不知道 h2py,但你可能想看看 'ctypes' 和 'ctypeslib'。 ctypes 包含在 python 2.5+ 中,旨在创建与 c-structs 的二进制兼容性。
如果你添加 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 并自己构建它(实际上做起来比说的容易)。预打包版本较旧。
【讨论】:
您从哪里得知 h2py 与结构或枚举有任何关系?
来源
# Read #define's and translate to Python code.
# Handle #include statements.
# Handle #define macros with one argument.
“enum”和“struct”这两个词永远不会出现在模块中。
【讨论】:
据我所知,h2py.py 不打算转换除#define 宏以外的任何东西。我确实遇到了cppheaderparser,这可能值得一看。
【讨论】: