【问题标题】:Can we use iOS framework like coremotion in c++ code我们可以在 c++ 代码中使用像 coremotion 这样的 iOS 框架吗
【发布时间】:2020-06-30 05:32:25
【问题描述】:

我需要用 C++ 构建一个库,它必须从运动传感器获取数据。然后是 android 和 iOS 中的库。看起来可以为 android 做这件事,但我正在努力为 iOS 找到答案。

【问题讨论】:

    标签: c++ ios core-motion ios-frameworks


    【解决方案1】:

    您将需要分别用于 ios 和 android 的桥接器。与 android 一样,您需要不同的包装器/JNI Bridge 和 ios Objective-c (.mm) 文件的不同包装器才能使用传感器值。当然,您不能共享每个平台都不同的传感器。

    您可以查看这个开源存储库,了解如何使用 C++ 和 obj-c / Swift 的包装器。

    https://github.com/foundry/OpenCVSwiftStitch

    【讨论】:

      【解决方案2】:

      您可以在 iOS 中使用 C++。最典型的方法是通过混合“Objective-C++”文件 (.mm),它可以在 Objective-C 包装器中编译 C++ 功能,但您也可以使用直接的 C/C++ 源代码和 C/C++ 库。如果您希望您的 iOS 应用程序用 Swift 编写(推荐),它仍然可以使用这样的代码 - 我建议将 C++ 包装在 Objective-C(++) 中,并使用桥接头从 Swift 调用 Objective-C 包装器。

      【讨论】:

      • 我很清楚 .mm 文件,但我需要在 c++ 文件中使用 iOS/Android 原生框架。因此,我可以在使用 c++ 访问传感器值的同时跨 iOS 和 android 共享文件。任何例子都会很有帮助
      • 您可以包含您的跨平台 C++ 文件,但随后将 C++ 类从 .mm 文件包装起来,以使它们通常可用于 Objective-C 代码。有更多的方法可以做到这一点,而不是这里的答案范围 - 它确实涉及适配器和桥接等设计模式,并且还有内存管理和异常处理问题需要一些研究。但这是可能的,并且经常用于跨平台库。如果您遇到更具体的问题,您可能会在此处找到答案,或者发布它们以获得更详细的答案。
      • @Haris 您将需要分别为 ios 和 android 架桥。与 android 一样,您需要不同的包装器/JNI Bridge 和 ios Objective-c (.mm) 文件的不同包装器才能使用传感器值。当然,您不能共享每个平台都不同的传感器。简单来说,您可以编写 2 个不同的适配器并在 c++ 文件中相应地使用它。
      猜你喜欢
      • 2013-09-16
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2015-02-04
      相关资源
      最近更新 更多