如何在Android本机代码中使用共享内存?

时间:2016-07-28 10:27:04

标签: android android-ndk shared-memory

我正在将一个现有的linux应用程序移植到android。该应用程序使用共享内存API,如shm_open()等。

检查bionic in android source,我发现这些API不受支持。因此,我在构建期间遇到链接错误。

external/l2/avbtp.c:138: error: undefined reference to 'shm_open'
external/l2/avbtp.c:151: error: undefined reference to 'shm_unlink'
external/l2/avbtp.c:186: error: undefined reference to 'shm_unlink'

如何正确解决此问题?

2 个答案:

答案 0 :(得分:2)

Android intentionally doesn't provide SysV IPC。尽量避免使用共享内存,或者,如果您真的想要,请查找使用ashmem

的示例

答案 1 :(得分:1)

好吧,我发现了这个github项目,它很有效! https://github.com/pelya/android-shmem

像魔术一样,它完美无缺。您可以使用shmget(),shmat()和shmdt()API无缝地在独立进程中使用android中的共享内存。试一试。