【问题标题】:Can libraries built across multiple Android ndk versions work together?跨多个 Android ndk 版本构建的库可以一起工作吗?
【发布时间】:2021-02-05 04:12:26
【问题描述】:

我正在开发一个 Android C++ 项目,该项目需要我构建一个新的共享库并从现有代码调用该库。现有代码使用的是相当旧的 ndk 版本。我正在考虑使用最新版本的 ndk 来构建我的共享库。我的想法是,只要 API 和 ABI 匹配,集成应该可以正常工作。

想知道您是否发现这种方法有任何问题。

现有代码和新代码都使用 stl。我想我会简单地将我的代码与静态 stl 库链接起来,以避免任何运行时冲突。你认为这行得通吗?问候。

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    我只观察到当不同的本机部件(预建库和项目库)使用不同的 STL 链接时出现问题。预建库是使用static STL library 编译的,但项目库使用shared STL library,因此有时代码工作异常(在我的情况下,使用std::fstreamstd::locale::facet 是个问题,因为模板类的全局变量被实例化了两次)。

    【讨论】:

      【解决方案2】:

      他们通常会这样做,但这是一个完全未经测试的配置,并且确实会发生 ABI 损坏。

      如果可以选择,您应该始终匹配您的 NDK 版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-20
        • 2014-09-27
        • 2010-09-14
        • 2013-10-02
        • 2021-05-25
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多