目前我试验了:
1、C源码用ndk生成一个so库是可以在应用程序运行的。(这个就是NDK自带的sample里面hello-jni那个例子)
2、C源码+静态库用ndk生成so库是可以的(这个就是NDK自带的sample里面two-lib那个例子)
3、C源码+动态库怎么试都不行,高人可以把two-lib那个例子里面Android.mk文件中libtwolib-first那个模块由静态库改为动态库试一下。
那位高人帮忙解决下吧,非常感谢,快要过年了,大家都不容易啊 

解决方案 »

  1.   

    加上这个
    LOCAL_LDLIBS    := -L$(LOCAL_PATH)/<your_so_path> -l<your_so>还编不过?编过了跑不过?把你的so全拷贝到 libs/armeabi下看看,重新生成看一下
      

  2.   

    谢谢楼主的回复,我的是编译通过的。
    当前一个库生成静态库时,libs/armeabi下面只有一个libtwolib-second。
    当编译为动态库时,libs/armeabi下面有两个库,比上面多了一个libtwolib-first但是在模拟器里面调用这个库的时候就是报错,不知道为什么...
      

  3.   

    你得把错误信息贴出来吧~! 问题可能是很简单的,jni注册失败,或者程序写的有问题, sigmentation fault。没有信息,让我们猜怎么猜的到?
      

  4.   

    需要把动态库上传到模拟器的/system/lib目录下。
      

  5.   

    好久没有做JNI了,楼主是啥问题,没有看明白。需要把静态库变成动态库?
      

  6.   

    都是动态库加载后,要改下system.loadLibrary。
    具体是:
        System.loadLibrary("first");
        System.loadLibrary("twolib-first");
    注意先后顺序,先加载libfirst.so,然后再加载libtwo-first.so。
      

  7.   

    同问,这个问题纠结了好久啊!
    NDK的Sample里面真的没有哪个是调用第三方的so库的。