JNI教程(三)

一個簡單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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章