Linux下JNI的使用 測試

灬猜想灬 14年前發布 | 2K 次閱讀 CodeIgniter Zend

首先創建一個目錄,并進入這個目錄:

$ mkdir JNITest
$ cd JNITest

創建NativeJava.java文件,并加入如下內容:
public class NativeJava
{
        static
        {
                //"NativeC"是被調用的本地動態庫,將在后面創建
                System.loadLibrary("NativeC");
        }
        public native static void printInNative();
}

然后編譯NativeJava.java文件,并生成頭文件
$ javac NativeJava.java
$ javah NativeJava
生成NativeJava.class和NativeJava.h兩個文件.

接下來創建NativeC.c文件,加入如下內容:
#include "NativeJava.h"

include <stdio.h>

JNIEXPORT void JNICALL Java_T_printInNative(JNIEnv *env, jobject obj) { printf("Test JNI transfer C\n"); }</pre></div>


編譯NativeC.c文件,并生成動態鏈接庫
(如果JAVA_HOME不存在則直接指定java所在的目錄,生成的so文件名必須以lib做前綴)
$ gcc -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -fPIC -c NativeC.c -o NativeC.o
$ gcc -shared -Wl,-soname,libNativeC.so -o libNativeC.so NativeC.o

最后創建Java測試類來調用Native方法,創建Test.java文件
public class 
{
        public static void main(String[] args)
        {
                NativeJava.printInNative();
        }
}
編譯并執行Test.java
$ javac Test.java
$ java -Djava.library.path=/home/cx/JNITest Test
得到輸出結果: Test JNI transfer C

</div>

 本文由用戶 灬猜想灬 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
寫博客

博客分類