【问题标题】:C++ library for mobile application用于移动应用程序的 C++ 库
【发布时间】:2011-11-11 07:41:40
【问题描述】:

我有自己的带有源代码的 C++ 库。它包含如下函数:CreateDvice、FillDevice、CloseDevice 等。不依赖任何第三方库。 需要为移动平台创建应用程序:

  1. 黑莓
  2. iPhone
  3. 安卓

应用程序必须使用此库提供的逻辑。 是否有机会在移动应用程序中使用现有库或至少其中一些? 还是需要为每个平台重新实现库代码?

【问题讨论】:

标签: android iphone c++ blackberry mobile


【解决方案1】:

对于 iOS (iPhone/iPad),您可以直接编译您的库并从使用 Objective-C++ 和/或 C++ 编写的常规 iOS 应用程序中使用它。

对于 Android,您可以使用 NDK 直接编译您的库,然后用 Java 编写您的应用程序并通过 JNI 调用您的库,或者使用 NDK 用 C++ 编写整个应用程序。

我相信你在黑莓上运气不好,对于这个平台,你需要用 Java 重写你的库,因为应用程序或库都不能用 C++ 编写。

编辑:请参阅我的其他答案,了解可能对您有用的完全不同的方法。

【讨论】:

  • 将当前的 C++ 库转换为 Java 库以便在所有移动平台上使用是否有意义? Java 库会随处可用吗?
  • 您将无法在任何地方使用 java 转换的库。在 iOS 上您将使用 C++ lib,在 Blackberry 上您将使用 Java 版本,在 Android 上您可以使用其中任何一个。不幸的是,您必须维护库的两个版本。
  • @jkshneider:我希望你不是认真地建议他将他的原生 C++ 库转换为 Java,然后丢弃原始 C++ 代码,而是将转换后的 Java 库交叉编译回 Obj-C 以使用在 iOS 中。那将是寻找一个严重的头痛!
  • 这个问题在移动环境中似乎很普遍。在 C++ 库中实现了很多代码,并且很难为每个平台重新实现它。维护相同逻辑的几个版本更令人头疼。我希望这个问题有某种通用的解决方案。
  • @Miguel:我非常认真地建议移植该库。这是保证他对所有 3 个平台使用相同代码库的唯一方法。如果 Web 服务可行,那将是首选平台,但显然维护成本更高,并且存在可扩展性问题。
【解决方案2】:

黑莓:

技术上可以在 BlackBerry(或 Android、iPhone 等)上使用 ASM,但通常不允许(或不能在 BlackBerry 的情况下)第三方开发人员这样做。

iPhone:

当然。您可以静态链接 C++ 库。当然,它必须使用正确的指令集进行编译。有很多关于如何做到这一点的例子。翻译 - 您将需要代码。

安卓:

当然。 Mark Murphy 有一本很好的书。介绍材料在这里: http://www.androidguys.com/2009/10/14/android-beyond-java-part-one/

【解决方案3】:

您的问题不清楚。您是否需要跨平台库/引擎来创建移动应用程序?

如果是这样,Cocos2D 将是最好的选择。最初它是一个游戏引擎,但它也适用于应用程序。并且支持上面写的所有平台。

【讨论】:

  • 让我澄清一下。有带有接口的 C++ 库:CreateDevice、FillDevice、ClearDevice。我需要创建使用这些功能的应用程序。问题是 - 我能否以某种方式使用库中的现有实现,而不是在每个移动应用程序中实现 CreateDevice、FillDevice、ClearDevice。
【解决方案4】:

您可以选择创建一个打包您的库的服务,而不是在您打算支持的每个目标设备上编译您的 C++ 库。您可以将此库安装在您可以控制的主机上,然后在每个平台上您唯一需要做的就是调用此服务。

我不确定这对于您拥有的那种库是否有意义,但这将是一种维护您的库的单一版本的方法,并且您将保证在所有设备上都有相同的行为。

祝你好运。

【讨论】:

    【解决方案5】:

    Android 不是原生 Java,而是原生 C++。 iOS 本身也是 C++。那么为什么不直接保留 C++ 代码并放弃 RIM 的当前平台(因为他们正在切换到也支持 C++ 的 BBX)。

    【讨论】:

    【解决方案6】:

    对于黑莓,您可以使用 C++/Qt 级联;对于 iOS,您可以使用 C/C++ 和 Objective-C(C 的超集),Android 可以使用 C++ NDK。只要 Java 应用程序是独立的并且 JRE 与应用程序 (iOS) 一起预打包,您就可以在所有平台上使用 Java。您可以使用 JNI 与 C/C++ 库交互

    【讨论】:

      【解决方案7】:

      如果您想在所有平台上使用 Java 库,那将是可行的。

      Android 和 Blackberry 本身就是 Java。

      您可以使用名为 XMLVM 的工具将您的 Java 库交叉编译为 Objective C 以在 iOS 上使用。

      http://xmlvm.org/overview/

      它不是 100% 完美,但非常接近。我们广泛使用它来将常见的 Java 库代码移植到 iOS。将 C++ 库移植到 Java,一切顺利。

      【讨论】:

        猜你喜欢
        • 2016-09-07
        • 2017-05-30
        • 2022-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        相关资源
        最近更新 更多