标签: android android-ndk singleton shared-libraries static-libraries
我正在尝试在android ndk中为2个不同的库创建一个单例。
想象一下,我有:
lib1始终定义为lib2和lib3
lib1
lib2
lib3
但是当我在lib2上设置单例的值时,此值在lib3上保持为NULL。
如何使用此架构构建单例?
答案 0 :(得分:0)
问题很常见,并且没有像here和here所讨论的那样获得好的解决方案。共享库具有链接静态库的单独副本,包括代码和数据。不同SO中的静态库实例不会进行交互,并且也有很多好的原因。
您需要的是两者都可以访问的一块内存。您可以将单例移动到Java级别(毕竟它在Android下)。您可以拥有一个具有众所周知名称的临时文件。 C级TLS也可能有所帮助。
Android的共享内存工具(ashmem)没有用,因为它不提供命名块。
ashmem