工具:vc++6.0、eclipse、android ndk。
demo功能为:c++调用java中的function方法,运行结果打印出function。
创建一个JNIDemo类并且放到test目录下。
package test;
import java.util.Date;
public class JNIDemo {
public int property;
public int function(int foo, Date date, int[] arr) {
System.out.println("function");
return 0;
}
// 定义一个本地方法
public native void sayHello();
public static void main(String[] args) {
// TODO Auto-generated method stub
System.loadLibrary("JNIDemo");
JNIDemo jnidemo = new JNIDemo();
jnidemo.sayHello();
}
}
使用vc++6.0创建一个dll工程:
#include "iostream.h"
#include "test_JNIDemo.h"
//sayhello 本地方法的实现
JNIEXPORT void JNICALL Java_test_JNIDemo_sayHello(JNIEnv * env,jobject obj){
//得到这个类的对象
jclass leiduixiang = env->GetObjectClass(obj);
//得到这个类当中的function方法的id
jmethodID testclass = env->GetMethodID(leiduixiang,"function","(ILjava/util/Date;[I)I");
//CALL这个类的function方法
env->CallIntMethod(obj,testclass,0L,NULL,NULL);
}
vc++设置省略。
1.进入test目录javac JNIDemo 这个类。
2.退出test目录 javah test.JNIDemo 生成.h的文件。
3.将生成的.h的文件放到vc++工程目录当中。
4.将jni.h 和 jawt_md.h 也放到vc++工程目录当中。
5.生成dll 并且把dll目录放到环境变量中。
6.运行class 查看println结果。