在Python中使用C++类包

2024-09-30 22:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个可以通过C++类(https://github.com/stanleyseow/RF24/tree/master/RPi/RF24)控制的设备。在

我希望能够在Python中使用这个类,并认为可以将它包装起来。在

我找到了很多方法来实现这一点,但没有太多详细的文档和示例。特别是,我找到了Boost、Cython、SWIG和本机cythonapi。在

在哪种情况下哪种方法是最好的?你有关于这个的详细文档/例子的链接吗?在

谢谢!在


Tags: 方法文档httpsgithubmastercomtree示例
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:37

没有“最好的”;这完全取决于你的情况。在

对于单个类来说,本机C Python API并不太困难, 但是你必须创建一个完整的模块,然后是类。它 如果你公开一个过程接口,会更简单 比一个班。如果只有一个设备实例,则 会是一个合适的解决方案。在

SWIG非常适合C++类定义 生成包含它们的Python模块。结果 代码相对复杂,因为SWIG试图覆盖所有 Python的可能版本;对于任何2.7或更高版本(以及 可能稍早一点),您可以直接在 C++,没有任何中间Python。在

Boost广泛使用模板。这不是真的 对问题的适当解决方案;它增加了很多 相对简单的事物的复杂性 外部工具,而不是元编程。不过,如果 潜在的复杂性不会吓到你,可能不是那样 很难使用。在

我不熟悉赛顿。在

在全局范围内,如果你只拥有一个简单类的一个实例, 使用本机C API可能并不比 其他解决方案,并引入最少的 复杂性。在

相关问题 更多 >