我有一个包含#define语句,枚举和结构的C ++标头。我已经尝试使用Python附带的h2py.py脚本无效(除了给我#defines转换)。任何帮助将不胜感激。
答案 0 :(得分:11)
我不知道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并自己构建(实际上比说起来容易)。预先打包的版本很旧。
答案 1 :(得分:3)
刚刚找到pycparser。可能有用。
答案 2 :(得分:1)
据我所知,h2py.py并不打算转换#define宏以外的任何东西。我确实遇到了cppheaderparser,这可能值得一看。
答案 3 :(得分:-1)
你在哪里知道h2py与结构或枚举有什么关系?
来自消息来源
# Read #define's and translate to Python code.
# Handle #include statements.
# Handle #define macros with one argument.
单词'enum'和'struct'永远不会出现在模块中。