2024-09-30 22:25:37 发布
网友
我有一个可以通过C++类(https://github.com/stanleyseow/RF24/tree/master/RPi/RF24)控制的设备。在
我希望能够在Python中使用这个类,并认为可以将它包装起来。在
我找到了很多方法来实现这一点,但没有太多详细的文档和示例。特别是,我找到了Boost、Cython、SWIG和本机cythonapi。在
在哪种情况下哪种方法是最好的?你有关于这个的详细文档/例子的链接吗?在
谢谢!在
没有“最好的”;这完全取决于你的情况。在
对于单个类来说,本机C Python API并不太困难, 但是你必须创建一个完整的模块,然后是类。它 如果你公开一个过程接口,会更简单 比一个班。如果只有一个设备实例,则 会是一个合适的解决方案。在
SWIG非常适合C++类定义 生成包含它们的Python模块。结果 代码相对复杂,因为SWIG试图覆盖所有 Python的可能版本;对于任何2.7或更高版本(以及 可能稍早一点),您可以直接在 C++,没有任何中间Python。在
Boost广泛使用模板。这不是真的 对问题的适当解决方案;它增加了很多 相对简单的事物的复杂性 外部工具,而不是元编程。不过,如果 潜在的复杂性不会吓到你,可能不是那样 很难使用。在
我不熟悉赛顿。在
在全局范围内,如果你只拥有一个简单类的一个实例, 使用本机C API可能并不比 其他解决方案,并引入最少的 复杂性。在
没有“最好的”;这完全取决于你的情况。在
对于单个类来说,本机C Python API并不太困难, 但是你必须创建一个完整的模块,然后是类。它 如果你公开一个过程接口,会更简单 比一个班。如果只有一个设备实例,则 会是一个合适的解决方案。在
SWIG非常适合C++类定义 生成包含它们的Python模块。结果 代码相对复杂,因为SWIG试图覆盖所有 Python的可能版本;对于任何2.7或更高版本(以及 可能稍早一点),您可以直接在 C++,没有任何中间Python。在
Boost广泛使用模板。这不是真的 对问题的适当解决方案;它增加了很多 相对简单的事物的复杂性 外部工具,而不是元编程。不过,如果 潜在的复杂性不会吓到你,可能不是那样 很难使用。在
我不熟悉赛顿。在
在全局范围内,如果你只拥有一个简单类的一个实例, 使用本机C API可能并不比 其他解决方案,并引入最少的 复杂性。在
相关问题 更多 >
编程相关推荐