使用c ++编写的算法实时处理数据

时间:2016-11-29 11:52:16

标签: c++ ios swift algorithm eigen

以下是该方案:

我的swift应用程序从蓝牙收集数据,应该实时处理它们。这些数据主要来自IMU(陀螺仪,磁力计和加速度计)。

处理所有这些的算法将用c ++编写并使用一些库,如 Eigen 。我该怎么办?从我发现的:

1)将c ++文件放入我的项目中,在objective-c中编写包装器并将其桥接到Swift。现在也确定我是否可以轻松地在移动应用程序中包含Eigen。我认为这将是一个繁琐的过程

2)将所有算法作为库(.dll.lib并直接从swift调用,不确定是否可行)

3)将所有算法重写为Swift,使用Eigen代替Swift,不确定是否存在类似的东西。此外,这种解决方案效率较低,可能因截止日期而失败。

我该如何解决这个问题?如何以最有效的方式解决它,我可以利用已经存在的c ++代码?

我相信你们中的一些人会认为这个问题是基于意见的,但我不知道如何以排除任何含糊不清的方式陈述这个问题。

如何在iOS应用程序中运行使用Eigen的c ++文件是Swift?

提前致谢

1 个答案:

答案 0 :(得分:3)

你不能从Swift调用c ++。但是,可以从objective-c ++中调用c ++。你可以从Swift和objective-c调用objective-c ++。

只需确保面向公众的@interface代码(在.h文件中)仅包含objective-c。 (没有类,没有模板,没有名称空间,不包括c ++标题)。

你的@implementation进入扩展名为.mm的文件,该文件将编译为objective-c ++ - 在Objective-C对象的实现中为您提供了一个完全使用c ++的objective-c接口

c ++对象作为objective-c ++实现的成员变量非常愉快地生活。但是,它们将默认构造,然后objc运行时调用Init。如果您使用的是没有默认构造函数的对象,则需要将它们包装在boost::optionalstd::unique_ptr(等)中。

您可以将objective-c对象导入Swift程序。

以前没有这样做过的人的完整示例:

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