在NDK静态库中创建单例

时间:2012-11-05 13:17:43

标签: android android-ndk singleton shared-libraries static-libraries

我正在尝试在android ndk中为2个不同的库创建一个单例。

想象一下,我有:

  • lib1(静态)
  • lib2(共享)
  • lib3(共享)

lib1始终定义为lib2lib3

的LOCAL_STATIC_LIBRARIES

但是当我在lib2上设置单例的值时,此值在lib3上保持为NULL。

如何使用此架构构建单例?

1 个答案:

答案 0 :(得分:0)

问题很常见,并且没有像herehere所讨论的那样获得好的解决方案。共享库具有链接静态库的单独副本,包括代码和数据。不同SO中的静态库实例不会进行交互,并且也有很多好的原因。

您需要的是两者都可以访问的一块内存。您可以将单例移动到Java级别(毕竟它在Android下)。您可以拥有一个具有众所周知名称的临时文件。 C级TLS也可能有所帮助。

Android的共享内存工具(ashmem)没有用,因为它不提供命名块。