SO文件找不到解决方案

最近做一个jni项目,拿到的so库需要用jni封装一层,等于是在jni的C++代码里调用第三方库的方法,然后整个项目在Android上运行出结果。

自己用jni生成的so是libaa.so 使用的第三方库是libbb.so。

到目前为止,遇到的问题是libbb各种找不到。libbb库去哪儿了?

E/AndroidRuntime(11626): Caused by: java.lang.UnsatisfiedLinkError:

Cannot load library: soinfo_link_image(linker.cpp:1640):
could not load library libbb.so needed by libaa.so;

caused by load_library(linker.cpp:750): library libbb.so not found

以上错误是在运行阶段发生的,事实上编译阶段也发生过找不到第三方的问题,表现就是库里实现的方法undefined。

分两方面解决

1,编译阶段找不到库,需要修改MK文件。

1.libbb.so放在jni/prebuilt文件夹(自己新建),同时把Android.mk复制一份到prebuilt下。

2.libbb.so的mk如下:

?


1

2

3

4

5

6

7

8

9

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := bb

LOCAL_SRC_FILES := libbb.so

include $(PREBUILT_SHARED_LIBRARY)

3.libaa.so的mk文件需要引入上面的mk。

?


1

2

3

4

5

6

7

8

9

10

11

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := aa

LOCAL_SRC_FILES := aa.cpp

LOCAL_LDLIBS := -llog

LOCAL_SHARED_LIBRARIES := bb

include $(BUILD_SHARED_LIBRARY)

include $(LOCAL_PATH)/prebuilt/Android.mk

这样在编译阶段就可以连接到第三方库咯。

2.运行阶段找不到库

在运行阶段找不到库就是Android的事情了。后来发现是load库的顺序(默哀一个,破顺序。。)。

?


1

2

3

4

5

static

    {

        System.loadLibrary(bb);

        System.loadLibrary(aa);

    }

先load第三方库,再load自己的库,因为aa库要用bb库里的方法,是依赖于bb库的,所以要先load。。

这样在运行阶段也可以找到库咯。

时间: 2024-10-13 11:47:30

SO文件找不到解决方案的相关文章

angular-cli ng build 大量文件找不到解决方案

基于Metronic开发. 将index.html 里面的<base href="/"> 改为<base href="./"> 前面加一个 点 就好了,然后再次打包. 不能直接在本地打开,需要模拟服务器环境打开才可以. 原文地址:https://www.cnblogs.com/MainActivity/p/9197898.html

你绝对想不到R文件找不到(cannot resolve symbol R)的原因

你绝对想不到R文件找不到(cannot resolve symbol R)的原因 最近在项目开发中 Android Studio 的 R 文件突然找不到了.IDE 中出现了以下提示 cannot resolve symbol R Clean And Rebuild 一般来说看到这个错误随便 Google baidu 回来的答案无非就是 clean -> rebuild 工程 而我的本能反应也是如此然而一点用都没有! 资源id冲突 虽然整个工程涉及到 R 文件都无法找到,但是跑起来却是正常,完全没

【JNI编程】使用javah命令生成头文件报错的解决方案

异常信息: 提示找不到某个类(要进行编译的类) 产生异常的开发环境: jdk7.0 ndk版本: android-ndk-r7b 解决方案: 在环境变量classpath中添加android.jar这个文件的目录 如:E:\eclipse\android-sdks\platforms\android-8\android.jar 问题描述: 刚开始研究JNI,然后让这个问题折腾了一上午,使用javah来生成java的class文件没问题,但是生成包含android特有的类库的class文件就出错,

如何解决mathpage.dll或MathType.dll文件找不到问题

如何解决mathpage.dll或MathType.dll文件找不到问题 MathType 6.9简体中文版是一款功能很强大的数学公式编辑器,但是因为不明原因,有时会出现找不到MathType.dll或者mathpage.dll文件找不到的错误窗口提示,而导致软件无法正常使用,本文将教您解决mathpage.dll或MathType.dll文件找不到的问题. 错误提示: 或者: 甚至运行时出现的: 解决方法: 步骤一:要确保路径被office信任.依次打开word->文件->选项->信任

编译过程中,termcap.h 文件找不到路径 licli.a终于生成

编译过程中,termcap.h      文件找不到路径 查看是linux  源码下找不到termcap.h文件 安装了所有关于*cap*的源码包也不起作用 今天终于解决了这个问题,搜termcap.h  发现一篇文章,如下 ----------------------------------------------------------------------------------------- 安装minicom2.3出现termcap.h错误解决方法 2010-05-06 17:12:

Ubunto 安装Apache2以后 httpd.conf文件找不到问题

如果使用subo apt-get install apache2命令安装的apache,如果发生httpd.conf文件找不到问题,不妨看看下面的文章说明 文章联接:http://wiki.ubuntu.org.cn/Apache#.E9.85.8D.E7.BD.AEapache

关于在DEDECMS当中模板文件不存在的解决方案

大家可能在生成文档的时候遇到过,模板文件不存在,无法解析  这个问题,其实这个遇到这个问题的大多数人应该是修改了默认模板的名称才导致这样的问题,如果你避免这种问题大家在一开始对模板进行命名的时候就要写成默认的名称,不然的话,你后期的工作是很不好做的,如果你都修改了很大一部分问题,后才发现出来了这个问题在那么多的栏目中要找到那个模板文件不存在的栏目貌似不是很容易吧!那么我们就修改一下DEDE的一个文件: 文件地址:include/arc.archives.class.php 打开他,定位到605行

MySQL命令行导入sql文件时出现乱码解决方案

Note: sql> source F:weibo.sql(执行相关sql文件) sql> select * from sina into outfile "/weibo.txt"(导出相应数据到C:的weibo.txt) 1. mysql 5.0后其客户端仅支持gbk,故可在sql> set names gbk; 例如: set names gbk; /* Navicat MySQL Data Transfer Source Server : localhost_3

redmine 中文附件下载文件找不到

/redmine/app/views/attachments/_links.html.erb 找到 <p><%= link_to_attachment attachment, :class => 'icon icon-attachment', :download => true -%> 替换为 <p><%= link_to attachment.filename, attachment_path(attachment) , :class => '