You need to enable JavaScript to run this app. Android NDK中sharedmem.h对应.so动态库位置及链接问题解决
优惠活动
大模型
产品
解决方案
定价
更多

Android NDK中sharedmem.h对应.so动态库位置及链接问题解决

报错根因

ASharedMemory_create 是Android NDK公开接口的导出符号,隶属于libandroid.so动态库,不存在独立的sharedmem.h专属动态库文件,此前定向查找独立共享内存库的方向存在偏差。

配置修正方案
  • 基础环境校验
    • 确保项目配置的minSdkVersion不低于26:ASharedMemory系列API从Android 8.0(API Level 26)开始正式对外提供,低版本SDK下即便完成链接也无法匹配对应符号。
    • 确保使用NDK r19及以上版本:过旧的NDK版本未将android/sharedmem.h纳入公开头文件检索路径,会引发头文件找不到、符号未导出的连锁问题。
  • CMake链接配置调整
    找到CMakeLists.txt中对应可执行目标的target_link_libraries配置块,在原有链接列表中新增android库,示例配置如下:
    target_link_libraries(main
        # 原有已定位的NNAPI动态库保留
        neuralnetworks
        # 新增此项,提供所有ASharedMemory系列API的符号实现
        android
    )
    
  • 代码头文件引入修正
    不需要手动指定头文件搜索路径,按照NDK标准路径引入共享内存头文件即可:
    #include <android/sharedmem.h>
    
排查注意事项
  • 配置完成后如果仍提示符号未定义,先检查CMake配置中的ABI筛选规则,确保编译目标(如arm64-v8a、armeabi-v7a)对应的NDK库路径下存在libandroid.so文件,正常安装的NDK会内置该库,无需单独下载。
  • 不要尝试添加不存在的sharedmem、libsharedmem类伪库到链接列表,这类库在Android NDK生态中不存在,会引发新的链接错误。

内容的提问来源于stack exchange,提问作者JanosLim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 13:15:07