簡體   English   中英

使用C ++編寫的算法實時處理數據

[英]Real time processing data using algorithms written in c++

這是場景:

我的Swift應用程式會從藍牙收集資料,並應進行即時處理。 這些數據主要來自IMU(陀螺儀,磁力計和加速度計)。

處理所有這些問題的算法將用c ++編寫,並利用一些庫,例如Eigen 我應該如何處理這樣的問題? 根據我的發現:

1)將c ++文件放入我的項目中,在Objective-c中編寫包裝器並將其橋接到Swift。 現在還要確定我是否可以輕松地將Eigen包含在移動應用中。 我想這將是一個乏味的過程

2)將所有算法獲取為庫( .dll.lib ,然后直接從swift調用它,不確定是否可行)

3)將所有算法重寫為Swift,使用Eigen替代Swift,不確定是否存在類似的東西。 而且,該解決方案效率較低,並且可能會由於期限問題而失敗。

我應該如何處理這樣的問題? 如何以最有效的方式解決它,在這里我可以利用已經存在的c ++代碼?

我相信你們中的某些人會將此問題視為基於觀點的觀點,但是我不知道如何以排除任何歧義的方式來陳述這個問題。

Swift是如何在iOS應用中運行使用Eigen的C ++文件的?

提前致謝

您不能從Swift調用c ++。 但是,您可以從Objective-C ++調用C ++。 您可以從Swift和Objective-c調用Objective-C ++。

只需確保面向公眾的@interface代碼(在.h文件中)僅包含Objective-C。 (沒有類,沒有模板,沒有名稱空間,不包括c ++頭)。

您的@implementation放在擴展名為.mm的文件中,該文件將作為Objective-C ++進行編譯-為您提供一個Objective-C接口,並在實現Objective-C對象時充分利用了C ++。

C ++對象作為目標C ++實現的成員變量生活得很愉快。 但是,它們將是默認構造的,然后objc運行時將調用Init 如果您使用的對象沒有默認構造函數,則需要將它們包裝在boost::optionalstd::unique_ptr (等)中。

他們可以將Objective-C對象導入到Swift程序中。

完整的示例,適用於以前從未做過的任何人:

https://github.com/madmongo1/swift-to-cpp-demo.git

暫無
暫無

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

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