gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:26:40 24 4
gpt4 key购买 nike

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

就我而言,我想绑定(bind) Python,此类包的一些选项是:SWIG , Boost.PythonRobin .

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

然而,我的情况是我已经有一个用 C++ 开发的工作系统,因此计划将 Python 嵌入其中,以便 future 的开发将在 Python 中进行。

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

我正在寻找的是关于最适合这种情况的设计的见解。

最佳答案

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

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

如果你不使用智能指针,你仍然可以做你想做的所有事情,但是你必须弄乱各种退货和终身政策,这会让你头疼。

关于swig - 在 C++ 中扩展嵌入式 Python - 设计与 C++ 实例交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965514/

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