1. 程式人生 > >JNI的使用(以輸出HelloWorld為例)

JNI的使用(以輸出HelloWorld為例)

先說一下什麼是JNI。JNI是Java Native Interface的縮寫,中文為JAVA本地呼叫。JNI允許Java程式碼和其他語言寫的程式碼進行互動。
以HelloWorld為例。
1、首先寫Hello.java
public class Hello {
 public native void displayHelloWorld();//對本地的宣告  
 static {
  System.loadLibrary("hello"); //載入本地庫 hello.dll 
 }
 public static void main(String[] args)
 {
  new Hello().displayHelloWorld();
  
 }
}
2、先編譯Hello.java生成Hello.class,然後生成標頭檔案Hello.h,或者自己寫。
生成方法:cd 到工作區bin路徑
然後javah Hello
這裡注意如果有包名,也是到bin路徑,然後javah 包名.Hello
或者直接用javah -classpath .....\bin 包名.Hello,不過這個方法時靈時不靈,我開始靈了一下
3、生成之後,寫Hello.cpp
#include"hello.h"
#include"jni.h"
JNIEXPORT void JNICALL Java_Hello_displayHelloWorld
  (JNIEnv *, jobject)
{
 printf("Hello,world");
}
4、開VC新建一個工程,工程名hello,Win32 Dynamic-Link Library
把Hello.h和Hello.cpp匯入進去。
執行cpp檔案如果提示缺少各種.h(如jni.h),則到JDK路徑下bin\include找到缺失的標頭檔案,複製到VC的bin\include目錄下面。或者直接匯入到工程。
執行cpp檔案,會在Debug下面生成一個hello.dll,至此大功告成。
5、把hello.dll匯入到java工程目錄。
編譯執行Hello
就會輸出Hello,world
此時的輸出實際上是呼叫的C語言的輸出。