簡體   English   中英

包裝要在Python中使用的C ++類

[英]Wrapping C++ class to use in Python

我有一個可以通過C ++類( https://github.com/stanleyseow/RF24/tree/master/RPi/RF24 )控制的設備。

我希望能夠在Python中使用此類,並認為可以包裝它。

我找到了很多方法,但是沒有很多帶有示例的詳細文檔。 特別是,我發現了Boost,Cython,SWIG和本機C Python API。

在哪種情況下哪種方法最好? 您是否有一些指向詳細文檔/有關此示例的鏈接?

謝謝 !

沒有“最好的”。 這完全取決於您的情況。

對於單個類,本機C Python API並不是太困難,但是您必須先創建整個模塊,然后再創建類。 如果您公開一個過程接口而不是一個類,那會更簡單。 如果您只有該設備的一個實例,那么這將是一個合適的解決方案。

SWIG非常適合采用C ++類定義並生成包含它們的Python模塊。 由於SWIG試圖覆蓋所有可能的Python版本,因此所得的代碼相對復雜。 對於2.7或更高版本(也許更早一點)的任何東西,您都可以直接在C ++中完成所有操作,而無需任何中間Python。

Boost大量使用模板。 這實際上不是解決該問題的合適方法; 如果使用外部工具(而不是元編程)完成相對簡單的操作,則會增加很多復雜性。 但是,如果基本的復雜性不嚇到您,則可能並不難使用。

我對Cython不熟悉。

在全球范圍內,如果您擁有的只是一個簡單類的一個實例,那么使用本機C API可能不會比其他解決方案難得多,並且會帶來最小的內部復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM