android下调用C,JNI调用

1.eclipse中声明调用的C函数  com.example.test.MainActivity

   public native long RucMyfunction(int w,int h,int[] myarray);

2.利用 javah.exe  生成  C的头文件

  进入到工程目录(假设为test)  javah -classpath .src -d jni  com.example.test.MainActivity 。 .src 表示当前目录下的src 目录

 执行后当前目录test下生产jni文件下,内有com_example_test_MainActivity.h,其中声明了函数 Java_com_example_test_MainActiviy_RunMyfunction,实现的时候就按这个原型写函数名。

3.实现C函数,jni目录下新建Main.c

4.linux下使用NDK编译Main.c生成.so库

   jni文件夹下Android.mk:

   LOCAL_MODULE    := test //生成的库名字
  LOCAL_SRC_FILES := Main.c
//编译的源文件

  linux下进入jni目录,输入$NDK/ndk-build编译,会在test目录下生成libs目录和libtest.so

5.eclipse中调用

  类中声明

      static{
            System.loadLibrary("test");
    }

 OnCreate函数中调用:

 long i = RucMyfunction(w,h,array);

 

  

原文地址:https://www.cnblogs.com/mlj318/p/4503575.html