gpt4 book ai didi

python - pybindgen 无法与 gccxml 一起使用

转载 作者:行者123 更新时间:2023-11-30 05:26:56 26 4
gpt4 key购买 nike

我有一个 C++ 库,我想绑定(bind)到 Python。我开始使用 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(适用于 Python 3.5)。文档实际上并没有过多地介绍这个过程,所以如果能简要介绍一下如何使用这个功能,我们将不胜感激。

提前致谢。

最佳答案

解析函数接受一个标题列表。

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

关于python - pybindgen 无法与 gccxml 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com