一個簡單JNI實現add的demo
一、編寫CalcAddJava.java文件
public class CalcAddJava{
//所有native關鍵詞修飾的都是對本地的聲明
public native int add(int num1 , int num2);
static {
System.loadLibrary("add");//載入本地庫
}
public static void main(String[] args) {
CalcAddJava obj = new CalcAddJava();
int result = obj.add(1,2);
System.out.println("result is :" + result);
}
}
二、執行javac命令
javac CalcAddJava.java
三、執行javah命令創建JNI頭文件
(1) javah CalcAddJava
(2) 修改一下文件名稱
mv CalcAddJava.h CalcAddJni.h
四、創建JNI實現文件
vi CalcAddJni.cpp
#include "CalcAddJni.h"
#include "iostream"
/* class: CalcAddJava
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_CalcAddJava_add
(JNIEnv *env, jobject static_or_instance, jint num1, jint num2) {
std::cout << "hello Java_CalcAddJava_add implements JNI in c++" << std::endl;
return num1 + num2;
}
五、編譯動態鏈接庫
(1) g++ -fPIC -I/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include/ -I/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include/Linux -c CalcAddJni.cpp
(2) g++ -shared -o libadd.so CalcAddJni.o
六、執行java類
java -Djava.library.path=. CalcAddJava