下面以Hello World 为例来说明
(1)java源程序,有一个native方法,输出hello world
import java.io.IOException;
public class helloworld {
static{
System.loadLibrary("helloworld");
}
public static native void printit();
public static void main(String[] args) { helloworld h = new helloworld();
h.printit();
}
}
(2)生成dll
javac helloworld.java
javah -jni helloworld
至此生成 helloworld.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class helloworld */
#ifndef _Included_helloworld
#define _Included_helloworld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: helloworld
* Method: printit
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_helloworld_printit
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
手工建立main.cpp
#include "jni.h"
#include "helloworld.h"
#include "windows.h"
#include "stdio.h"
JNIEXPORT void JNICALL Java_helloworld_printit
(JNIEnv *env, jclass obj)
{
MessageBox(NULL,"HelloWorld","ok",MB_OK);
}
(3)手工建立helloworld.def
EXPORTS
Java_helloworld_printit
(4)配置Code::Blocks
右击工程名字,选择Build options...
定位到Linker settings选项卡
在Other linker options中加入helloworld.def
(5)将helloworld.dll放到helloworld.class文件所在的文件夹中
java helloworld
弹出对hello world 对话框