JNI调用在linux环境下编译过来的so文件,我该如何去调用?

解决方案 »

  1.   

    寫一個java的wrap類,類中的native方法與so中的接口函數對應即可
      

  2.   

        /* 函数段begin */
        private native void init();
         static
         {
             Log.d(TAG, "load libuninstalled_moniter");
             try {
              System.loadLibrary("uninstalled_moniter");
    //          System.loadLibrary("moniter");
    }catch (UnsatisfiedLinkError ule) {
    ule.printStackTrace();
    }
       }
        
        @Override
        public void onCreate(Bundle savedInstanceState)
       {
           super.onCreate(savedInstanceState);
            Log.d(TAG, "onCreate");
           setContentView(R.layout.uninstalled_moniter_layout);
           init();
         }
        /* 函数段end */
     }简单的JNI调用,先要声明so库中的方法,然后加载SO库,在调用声明的方法
      

  3.   

    在调用ffmpeg时,报错:In file included from jni/ffmpeg/libavutil/avutil.h:238:0,
                     from jni/ffmpeg/libavutil/samplefmt.h:24,
                     from jni/ffmpeg/libavcodec/avcodec.h:30,
                     from jni/tiger.c:5:
    jni/ffmpeg/libavutil/common.h:40:32: fatal error: libavutil/avconfig.h: No such file or directory
    compilation terminated.
    求指导
      

  4.   

    用dlopen的方式打开第三方so
    http://www.cnblogs.com/lovelili/archive/2012/03/10/2389172.html
      

  5.   

    我先在调用的时候,在运行ndk-build的时候出现:无法识别可输入文件的格式...求教这该如何解决
      

  6.   

    建议先看看SD文件夹下面的代码示例
    好像就在SDK/simple/JNI 你看看调用过程,
    看看生成SO的CPP