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);