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

标签 c++ ios swift algorithm eigen

场景如下:

我的 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++ - 为你提供一个充分使用 c++ 的 objective-c 接口(interface)Objective-C 对象的实现。

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

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

对于之前没有这样做过的人的完整示例:

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

关于c++ - 使用 C++ 编写的算法实时处理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40865248/

相关文章:

C++ - 保持控制台窗口打开?

c++ - FFmpeg - RTCP BYE 数据包

ios - launchOptions 'UIApplicationLaunchOptionsLocalNotificationKey' 是否包含 NSDictionary 或 UILocalNotification

swift - 提取错误枚举案例的原始值

iOS swift : MKPointAnnotation not always showing title

c++ - C++类中的对象作为成员变量

c++ - undefined reference 错误

iOS Swift 使用 image.xcassets VS 将图像放在 xcode 文件夹中

ios - UINavigationController 状态恢复(无 Storyboard)

swift - 在 NSTextField 中查找单词的矩形/位置