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

Android Studio中so文件用途及MNN库头文件引入问题咨询

解答

关于so文件的用途

.so文件是Android平台下的动态链接库,它不包含头文件,仅存储编译后的二进制机器码(即API的具体实现逻辑)。头文件的作用是给C++代码提供API声明,告诉编译器函数、类的名称、参数、返回值等规则;而so文件是这些声明对应的实际执行代码,会在程序运行时被加载调用。因此so本身不提供头文件,你需要单独获取MNN的头文件。

关于#include <MNN/expr/Module.hpp>的问题

这个语句不是从so文件中获取头文件的。C++中尖括号<>表示从系统/编译器指定的全局头文件搜索路径中查找文件,而引号""则优先从当前源代码所在目录查找。

要在你的项目中实现这个引入,需要完成以下步骤:

  1. 获取MNN头文件:从MNN源码中复制include目录下的所有文件到你的项目中,比如放到src/main/cpp/include路径下。
  2. 修改CMakeLists.txt添加头文件路径:让编译器能找到MNN的头文件,添加如下代码:
# 添加MNN头文件搜索路径
include_directories(src/main/cpp/include)
  1. 在CMakeLists.txt中链接libMNN.so:指定动态库的位置并链接到你的原生库,添加如下代码:
# 声明导入MNN动态库
add_library(MNN SHARED IMPORTED)
# 设置MNN动态库的路径
set_target_properties(MNN PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../libs/arm64-v8a/libMNN.so)
# 将MNN库链接到你的原生库(替换成你项目实际的原生库名称,比如native-lib)
target_link_libraries(你的原生库名称 MNN)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:20:40