You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android JNI多CPP编译报错:libsample.so未找到,CMake配置是否有误?

问题分析与解决

你的CMakeLists.txt配置存在逻辑问题,直接导致了库加载崩溃:

核心问题

当前配置是将sample.cpp和capplication4.cpp两个文件编译到同一个共享库libcapplication4.so中,并没有单独生成libsample.so。但你在Java代码里尝试加载sample库(系统会自动查找libsample.so),这个库实际不存在,因此抛出UnsatisfiedLinkError。

两种解决方式

方式一:合并到单个库(推荐,减少库体积)

无需修改CMake配置,仅调整Java代码:所有需要调用JNI的类,只加载capplication4这一个库即可,两个cpp文件中的JNI函数都会包含在libcapplication4.so里。

方式二:生成两个独立库

如果确实需要两个单独的共享库,将CMakeLists.txt修改为以下内容,分别编译两个cpp文件为独立库:

cmake_minimum_required(VERSION 3.22.1)
project("capplication4")

# 编译capplication4库
add_library(capplication4 SHARED
        capplication4.cpp)
target_link_libraries(capplication4
        android
        log)

# 编译sample库
add_library(sample SHARED
        sample.cpp)
target_link_libraries(sample
        android
        log)

修改后重新编译,会生成libcapplication4.so和libsample.so两个文件,此时Java代码分别加载对应库即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:43:16