不能使用pybindgen与gccxml一起工作

时间:2016-06-01 04:02:17

标签: python c++ pybindgen

我有一个想要绑定到Python的C ++库。我开始使用Pybindgen,它非常容易使用,但考虑到我的C ++库的大小,手动添加函数和命名空间需要很长时间。我已经阅读了有关PyBindGen的文档,特别是gccxml部分,据说可以为我扫描头文件。这将是理想的,但我无法使其正常运行。就像测试一样,我输入了我的主头文件并尝试导出它,但是我收到了这个错误:

python bindinggenerator.py
Traceback (most recent call last):
  File "bindinggenerator.py", line 16, in <module>
    main()
  File "bindinggenerator.py", line 9, in main
    module = module_parser.parse("include\\PhospheneEngine.h")
  File "C:\Users\paolo\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pybindgen\gccxmlparser.py", line 598, in parse
    pygen_classifier, gccxml_options)
  File "C:\Users\paolo\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pybindgen\gccxmlparser.py", line 658, in parse_init
    assert isinstance(header_files, list)
AssertionError

当然,我的Python代码基本上只是来自here的修改示例。

import sys

import pybindgen
from pybindgen import FileCodeSink
from pybindgen.gccxmlparser import ModuleParser

def main():
    module_parser = ModuleParser('PhospheneEngine', '::')
    module = module_parser.parse("include\\PhospheneEngine.h")
    module.add_include("'include\\PhospheneEngine.h'")

    pybindgen.write_preamble(FileCodeSink(sys.stdout))
    module.generate(FileCodeSink(sys.stdout))

if (__name__ == '__main__'):
    main()

我安装了gccxml和pygccxml(For Python 3.5)。文档实际上并没有对这个过程说太多,因此可能会对如何使用此功能的快速概述表示赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:1)

parse函数采用标题列表。

module = module_parser.parse(["include\\PhospheneEngine.h"])