0

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

想象一下,我有:

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

lib1始终定义为 LOCAL_STATIC_LIBRARIESlib2lib3

但是当我在 lib2 上设置单例的值时,这个值在 lib3 上仍然为 NULL。

如何使用这种架构构建单例?

4

1 回答 1

0

正如这里这里所讨论的,这个问题很常见并且没有好的解决方案。共享库具有链接的静态库的单独副本,包括代码和数据。不同 SO 中的静态库实例只是不交互,而且有很多很好的理由。

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

Android 的共享内存设施 ( ashmem) 将毫无用处,因为它不提供命名块。

于 2012-11-06T01:35:05.920 回答