ceo*_*ron 17 c++ python python-bindings
我正在我的程序中使用python(CPython)来允许我的环境中的用户脚本,并允许我使用pyside,c ++的qt绑定为我的应用程序创建GUI.这些可以有效地分离,以后可以编译GUI python代码以获得速度(如果可能的话).
我是python的新手,我真的在寻找最有效的方法来生成可靠的最小额外代码来生成实体绑定,因为随着项目的发展,绑定可能会经常发生变化.我需要它,以便python类扩展具有虚拟的c ++类.
我已经研究过PyBindGen,它在我的库中的东西上经常窒息,因为它实际上很有用.
您在这方面建议的任何帮助/建议/链接/工作流程都非常有用.
And*_*jos 14
我知道只有两个项目可以为C++提供自动绑定生成器.第一个是SWIG.正如其他一些答案已经说过的那样,它有点旧式,但它有效.第二个是Boost.Python - 它本身不会自动生成绑定,但您可以使用Boost.Pyste为您完成.它需要GCC-XML来解析原始源代码并编写Boost.Python绑定.这两个选项都支持C++中可以从Python重载的虚方法.
也就是说,我必须补充这一点,通常,当你绑定时,你不要盲目地将你在C++中拥有的所有内容绑定到Python中 - 如果你这样做,你就不会从python那里得到一种非常pythonic的感觉.相反,您可以用最pythonic的方式设计如何在Python中使用库,然后再回过头来看看如何使用其中一个可能的绑定库将其修补到C++代码中.例如,std::vector您不希望处理's,而是希望您的库调用处理Python列表或迭代.如果您的C++库收到了std::map,那么您希望使用Python词典来处理它.如果它是一个数组,也许numpy.ndarray会更方便.等等...
也就是说,您仍然可以设计绑定,以便最大限度地减少维护.
以下是其他Python/C++包装的列表,以防您决定进一步了解:
这些现在不活跃:
为了完整起见,还可以将编译的C代码直接加载到Python中,而无需创建正式绑定.你可以使用 这两个Python模块中的任何一个使用FFI来做到这一点:
| 归档时间: |
|
| 查看次数: |
7146 次 |
| 最近记录: |