Step1:
編寫java類,e.g.:
//filename: HelloWorld.javapublic class HelloWorld{public native void displayHelloWorld();public native int add(int a,int b);static {System.loadLibrary("hello");}public static void main(String[] args){HelloWorld hw=new HelloWorld();hw.displayHelloWorld();System.out.println();System.out.println(" 1+20= "+ hw.add(1,20) );}}
Step2: javac HelloWorld.java
Step3: javah HelloWorld
產生標頭檔如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class HelloWorld */#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern "C" {#endif/* * Class: HelloWorld * Method: displayHelloWorld * Signature: ()V */JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);/* * Class: HelloWorld * Method: add * Signature: (II)I */JNIEXPORT jint JNICALL Java_HelloWorld_add (JNIEnv *, jobject, jint, jint);#ifdef __cplusplus}#endif#endif
Step4:用vc6建立一個win32 dll項目, 項目名hello
Step5:
tools->option->directory(標籤)
directories增加兩個include 路徑(具體看java的實際include路徑):
D:\java\jdk\jdk1.6.0_21\include
D:\java\jdk\jdk1.6.0_21\include\win32
Step6:
建立hello.cpp
#include <jni.h>#include "HelloWorld.h"#include <stdio.h>#include <windows.h>JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject){printf("hello 中國 !@#$");}/** Class: HelloWorld* Method: add* Signature: (II)I*/JNIEXPORT jint JNICALL Java_HelloWorld_add(JNIEnv *, jobject, jint a, jint b){return a+b;}