首先,在java源文件中把我们需要声明类中的函数为native,例如:
sam4java.java
public class Sam4java
{
public Sam4java(){
}
public native int intMethod(int n);
}
然后
javac sam4java.java,生成了sam4java.class;
javah sam4java,生成了sam4java.h
生成的c函数原形
JNIEXPORT jint JNICALL Java_sam4java_intMethod(JNIEnv *, jobject, jint);
注意:这个函数原形包含了3部分,(1)Java固定前缀 (2)sam4java类名 (3)iniMethod函数名
参数就不在这里讨论,以后补充.
根据生成的sam4java.h,自己实现sam4java.c文件,编译成功后就可以获得sam4java.dll
应为没有放到package里,所以运行时很简单,不需要考虑目录结构,把所有文件拷贝到同一个目录即可。
给sam4java.java增加main函数,如下:
public static void main(String[] args)
{
System.out.println("load lib sam4java start ......");
System.loadLibrary("sam4java");
System.out.println("load lib sam4java completed.");
Sam4java sam4java = new Sam4java();
int square = sam4java.intMethod(5);
System.out.println("intMethod: " + square);
}
最后,重新编译 javac sam4java.java
运行 java sam4java
如果我们把sam4java放到package com.me.test里,我们又该怎么办呢?