我有一个想要绑定到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)。文档实际上并没有对这个过程说太多,因此可能会对如何使用此功能的快速概述表示赞赏。
提前致谢。
答案 0 :(得分:1)
parse函数采用标题列表。
module = module_parser.parse(["include\\PhospheneEngine.h"])