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語言的輸出。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章