zoukankan      html  css  js  c++  java
  • Android 调用.so包时报错:No implementation found for native Lxxx, java.lang.UnsatisfiedLinkError: XXX时的解决办法(转)

    问题就是在调用自己同事写的.so包时,怎么也掉不通,程序一直报错退出,错误内容就是:

    1 No implementation found for native Lxxx, 

    Java.lang.UnsatisfiedLinkError: XXX时的解决办法

    因为我俩都没接触过ndk,所以我找了上午原因也一直没通,各种无力感涌来,

    其中包括以下几个很强力的办法,都没能解决我的问题:

    1 在.cpp文件里,增加extern C{}结构,

    2 在libs下,创建armeabi和armeabi_v7a这两个目录,分别将.so文件放进去。

    3 检查

    [java] view plain copy
    1. static{  
    2. <span style="white-space:pre">    </span>System.LoadLibrary("so name");//不能带lib  
    3. }  

    经过无数次失败后,想起平时调用百度地图,个推等等第三方包的时候,都有会一个或者多个.so文件,同时会有一个对应的命名类似.jar文件,想到也许是我创建的项目的目录名和.so本身的方法名不匹配造成的,于是:

    经过不断尝试,发现:

    在创建项目时,该项目的包名必须和这个.so文件的方法里的目录一致才可以保证调通,

    即:

    JNICALL Java_com_ndk_demo_jni_compute();

    那我们的项目包名就应该是:com.ndk.demo,而生命native方法的类名是:jni

    这样才能保证调用。

    其他的命名方式没有进行过多尝试,有其他匹配方式的同学,留言给我,多谢。

    这个方法解决了我的问题。

  • 相关阅读:
    FZU 2105 (线段树)
    HDU 4903 (模拟+贪心)
    Codeforces Beta Round #91 (Div. 1 Only) E. Lucky Array
    HDU 3308 (线段树区间合并)
    POJ 3667(线段树区间合并)
    线段树题集 (cf版)
    HDU 4902 (牛叉的线段树)
    20150204--JS巩固与加强2-01
    20150203+JS巩固与加强1-02
    20150203+JS巩固与加强1-01
  • 原文地址:https://www.cnblogs.com/mafeng/p/6694402.html
Copyright © 2011-2022 走看看