首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++设计中扩展嵌入式Python以与C++实例交互

在C++设计中扩展嵌入式Python以与C++实例交互
EN

Stack Overflow用户
提问于 2011-05-11 22:03:02
回答 2查看 966关注 1票数 2

有几个包可以帮助自动化编写C\C++和其他语言之间的绑定。

在我的例子中,我想要绑定Python,这样的包的一些选项是:SWIGBoost.PythonRobin

似乎直接的过程是使用这些包来创建C\C++可链接库(主要是静态函数),并使用它们扩展高级语言。

然而,我的情况是,我已经有了一个用C++开发的工作系统,因此我计划将Python语言嵌入其中,以便将来的开发将使用Python语言。

我不清楚如何(如果可能的话)使用这些包来帮助扩展嵌入式Python,使Python代码能够与系统中已经运行的各种单例实例交互,并实例化C++类并与它们交互。

我正在寻找的是关于最适合这种情况的设计的洞察力。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-11 23:45:18

Boost.python可以让你做很多开箱即用的事情,特别是当你使用智能指针的时候。您甚至可以继承Python中的C++类,然后将这些类的实例传递回您的C++代码,并使一切仍然正常工作。我最喜欢的关于如何做各种事情的资源是这个(特别是查看“如何做”部分):http://wiki.python.org/moin/boost.python/

如果您使用智能指针或侵入式指针,则Boost.python尤其有用,因为它们会透明地转换为PyObject引用计数。此外,它非常擅长使工厂函数看起来像Python构造函数,这使得Python API非常干净。

如果你不使用智能指针,仍然可以做你想做的所有事情,但是你必须弄乱各种返回和生命周期策略,这会让你很头疼。

票数 2
EN

Stack Overflow用户

发布于 2017-10-15 21:08:08

长话短说:这就是现代的另类pybind11。

长版本:我还必须嵌入python。Api的Python接口很小,所以我决定使用C C++。事实证明,这是一场噩梦。通过公开类,您可以编写大量复杂的样板代码。Python通过使用可读的接口定义极大地避免了这种情况。然而,我发现boost缺乏一个复杂的文档和数据,或者一些你仍然需要称为Python api的东西。此外,他们的构建系统似乎给人们带来了麻烦。我不能说,因为我使用系统提供的包。最后,我尝试了boost python fork pybind11,不得不说它确实很方便,并且修复了boost的一些缺点,比如使用Python Api的必要性,使用lambdas的能力,缺乏易于理解的文档和自动异常转换。此外,它只是头文件,并不会对部署产生巨大的boost依赖,所以我可以明确地推荐它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5965514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档