繁体   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