我现在有个动态链接库,即共享库 ***.so 文件.我想知道在android中怎样去调用里面的方法.我使用的是System.load("AdobeTest");的方法,但不明白为什么调不到.希望哪位大牛能帮帮我啊.

解决方案 »

  1.   

    android不支持, so库中实际只是java类中的几个方法, 这几个方法用c实现而已。 无法抛开java单独使用。当然你可以在jni的so库中再使用其他库,这可以。
      

  2.   

    "在jni的so库中再使用其他库"
    对这句话,我不太理解,麻烦你在说清楚点。
      

  3.   


    可以先学习一下如何用JNI来输出一句话,比如“helloworld”另外可以贴出代码来看看
      

  4.   

    其实我只是想问下,我手上只有个libAdobeReader.so的文件,其他的什么也没有. Eclipse平台没有Cygwin和NDK开发插件.问下,我能不能再android平台下去调用.代码该怎么写?环境该怎么去建?
      

  5.   


    这位朋友,你是不是说,我自己去写个"so"库?然后再我自己写的库中引用一个别人已经写好的"so"库?能不能给个例子.我是JNI的初学者,对C语言不太懂,谢谢!
      

  6.   

    我觉得你得先了解一下jni 自己动手做一个简单的打印helloworld的jni调用具体的可以参看一下
    http://blog.csdn.net/Zengyangtech/archive/2010/11/30/6046170.aspx
      

  7.   

    额,你可以看一下这个http://blog.csdn.net/steven_miao/archive/2010/12/30/6107251.aspx,因为我也是个新手,当时也不知大怎么下手,这是我当时的一些记录,希望对你有用,把你的so打包进apk,不过最好要有so文件的头文件,即包含了函数声明。
      

  8.   

    首先,你可以用nm XX.so命令 来查看so中的函数。
    因为jni调用so库,实际上是调用c语言的实现的函数。如果要在java中调用,你需要知道他写好的接口。就是java中的包名字需要和c语言里面的函数名字对应。如果你熟悉库里面的接口函数,需要自己在c里面添加自己的接口,然后重新编译自己的库在调用。
      

  9.   

    其实就是你的so必须是通过交叉编译后生成的,才能在android上调用,不然是么办法使用的
      

  10.   

    只有so没有java函数声明?
    如果你想用别人应用里的so,那这个不行,你不知道里面的函数怎么调用,很多程序中的so都是授权的,不是说你想用就能用的
      

  11.   

    结贴了.谢谢各位的解答.我已经调用的第三方提供的包.答案是:在要调用的项目下建libs/armeabi/lib**.so     然后使用System.loadLibrary("**");进行引用.调用so文件的方法时,在java中必须写native关键字.最后一点要特别注意:你所引用的第三方so文件所创建时的包名是什么,你在你调用的项目包名也必须相同!!!!
      

  12.   


    请问在何处使用nm **.so 这个命令!!
      

  13.   

    不好意思,好久没看帖了。linux命令行下。nm XX.so。就可以了
      

  14.   

    这个的意思就是:
    首先,Android支持JNI的,
    所以,你先要做个JNI调用,调用一个用C写成的.so库。
    然后,把你想要调用的.so库放在C代码中进行调用。