一、JNI開發程序的一般步驟
1、 編寫java中的調用類
2、 用javah生成c/c++原生函數的頭文件
3、c/c++中調用需要的其他函數功能,實現原生函數(原則上可以調用任何資源)
4、將項目依賴的所有原生庫和資源加入到java項目的java.library.path
5、生成java程序
6、發佈java應用和dll庫
二、JNI程序開發實例
1、TestHello.java
public class TestHello {
static{
System.out.print(System.getProperty("java.library.path"));
System.loadLibrary("TestHello");
}
public static native void hello(String msg);
public static void main(String[]args){
hello("Hi, Wu Yunmin!");
}
}
編譯生成TestHello.class文件。
2、run -> cmd,執行javah TestHello,生成TestHello.h文件;
3、打開VC6.0,新建工程TestHello
在彈出窗口選擇“一個簡單的DLL工程”
4、打開項目所在的文件目錄,將TestHello.h文件複製到此項目文件目錄下。
5、選擇VC6.0文件目錄欄下的“FileView”選項卡,在Header Files上點擊右鍵,選擇Add Files to Folder…。選擇TestHello.h文件,點擊OK。
6、打開StdAfx.h文件,再最後面添加:
#include <jni.h>
#include "TestHello.h"
7、在TestHello.cpp中添加如下代碼:
//方法名命名規則:Java + "_" + java的類名 + "_" + java類下的方法;如:Java_TestHello_hello
JNIEXPORT void JNICALL Java_TestHello_hello(JNIEnv * env, jclass obj, jstring jMsg)
{
const char *strMsgPtr = env->GetStringUTFChars( jMsg , 0);
MessageBox( 0, strMsgPtr,"Message box from VC++ ", 0 );
env->ReleaseStringUTFChars( jMsg, strMsgPtr);
}
8、在VC6.0的菜單上選擇Tools-Options…,打開選項對話框。在Directories文件夾,添加上jdk所在文件夾下的include和include\win32文件夾。
點擊VC上的菜單項Build-Build All,生成TestHello.dll。
9、將TestHello.dll複製到TestHello.class所在的文件夾下。
10、run -> cmd,執行java TestHello
如有不對之處,請指正。