一,编写HelloJava.java, 声明一个native method
package com; public class HelloJava { private native void print(); public static void main(String args[]) { new HelloJava().print(); } static { System.loadLibrary("HelloJava"); } }
二,进入"src/"目录,执行javac com/HelloJava.java,生成HelloJava.class
三,执行"javah -jni com.HelloJava 生成com_HelloJava.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_HelloJava */ #ifndef _Included_com_HelloJava #define _Included_com_HelloJava #ifdef __cplusplus extern "C" { #endif /* * Class: com_HelloJava * Method: print * Signature: ()V */ JNIEXPORT void JNICALL Java_com_HelloJava_print (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
三,编写HelloJava.c
#include <jni.h> #include <stdio.h> #include "com_HelloJava.h" JNIEXPORT void JNICALL Java_com_HelloJava_print (JNIEnv *env, jobject obj) { printf("hello java!"); return; }
四,执行 cl -Ic:/java/include -Ic:/java/include/win32 -MD -LD HelloJava.c -FeHelloJava.dll
生成HelloJava.dll
五,执行java com.HelloJava
成功显示hello java! 若执行失败,显示RutimeError R6034则这是vc的问题。
需要执行mt.exe -manifest HelloWorld.dll.manifest -outputresource:HelloWorld.dll;2
详见:http://msdn.microsoft.com/zh-cn/library/ms235591(VS.80).aspx
http://blog.sina.com.cn/s/blog_70584b480100lj5i.html
