Java JNI

測試JNI的使用方法java

環境準備

開發環境須要Java SDK(官網下載),下載完後安裝Java SDK。windows

編譯使用的MinGW,64位的官網能夠找到下載地址oracle

 

項目創建及代碼編寫

在任意地方新建一個目錄,保存這個項目,而後新建一個src目錄,用於存放源文件。由於Java有包的概念,因此進入src目錄後,根據包名的層次,依次創建相應目錄,而後新建Java源程序文件,好比:工具

 1 package test.jni;
 2 
 3 public class JniTest {
 4   
 5   public native void callme();
 6   
 7   public static void main(String[] args) {
 8     System.out.println("test jni");
 9     new JniTest().callme();
10   }
11 
12   static {
13     System.loadLibrary("jt");
14   }
15 }

編譯Java代碼,生成class文件。而後使用javah工具生成c語言頭文件,命令以下:測試

javah test.jni.JniTest

這時目錄下會生成一個以包名命名的.h文件,接下來新建一個c源程序jni.c,內容以下:spa

1 #include "jni.h"
2 #include "test_jni_JniTest.h"
3 
4 JNIEXPORT void JNICALL Java_test_jni_JniTest_callme
5   (JNIEnv *jEnv, jobject o)
6 {
7   printf("from c\n");
8 }

 

編譯動態連接庫

c源程序裏引用了JDK裏的一個頭文件jni.h,在JDK安裝目錄下的include目錄裏,jni.h裏引用了另外一JDK頭文件jni_md.h,在include目錄的win32目錄裏,因此編譯時加上這兩個搜索地址.net

gcc -Wall -shared -I"D:\Program Files\Java\jdk1.8.0_91\include" -I"D:\Program Files\Java\jdk1.8.0_91\include\win32" -o jt.dll jni.c

這時,項目目錄下就會生成一個jt.dll文件code

 

運行結果

下面就能夠執行class文件,查看結果了。blog

java test.jni.JniTest

正常狀況下,會在控制檯輸出開發

test jnifrom c

相關文章
相關標籤/搜索