我有一个想绑定到 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 代码基本上只是这里的修改示例。
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(对于 Python 3.5)。该文档实际上并没有过多地说明此过程,因此可能会感谢您快速了解如何使用此功能。
提前致谢。