8

我有一个包含#define 语句、枚举和结构的 C++ 标头。我尝试使用 Python 中包含的 h2py.py 脚本无济于事(除了给我转换的#defines)。任何帮助将不胜感激。

4

4 回答 4

11

我不知道 h2py,但你可能想看看 'ctypes' 和 'ctypeslib'。ctypes 包含在 python 2.5+ 中,旨在创建与 c-structs 的二进制兼容性。

如果你添加 ctypeslib,你会得到一个名为 codegen 的子工具,它有一个“h2xml.py”脚本和一个“xml2py.py”,它们的组合将自动从 C++ 生成你正在寻找的 python 代码标题。

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

h2xml.py 将需要另一个名为 gccxml 的工具:http ://www.gccxml.org/HTML/Index.html

最好检查(通过 CVS)最新版本的 gccxml 并自己构建它(实际上做起来比说的容易)。预打包的版本是旧的。

于 2008-12-17T17:06:54.403 回答
2

刚刚找到pycparser。可能有用。

于 2009-05-11T13:39:54.430 回答
1

据我所知,h2py.py 不打算转换除#define 宏以外的任何东西。我确实遇到了cppheaderparser,这可能值得一看。

于 2008-12-17T16:18:18.650 回答
0

您从哪里得到 h2py 与结构或枚举有任何关系的想法?

从源头

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

'enum' 和 'struct' 这两个词永远不会出现在模块中。

于 2008-12-17T16:19:19.477 回答