1.准备一JAVA类
package basesdk.tech.jni;
public class TestHello {
static {
//TestHello2.dll文件需要放到jre/bin目录下,否则报文件找不到.
System.loadLibrary("TestHello2");
}
public static native void hello(String msg);
public static void main(String[] args) {
hello("Hello,ChenZhian.\nMushroom!!!!");
}
}
2.利用javah命令生成JNI头文件:命令行下,进入eclipse工程bin目录,运行javah basesdk.tech.jni.TestHello,
回车即可在bin目录下生成文件:basesdk_tech_jni_TestHello.h,内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class basesdk_tech_jni_TestHello */
#ifndef _Included_basesdk_tech_jni_TestHello
#define _Included_basesdk_tech_jni_TestHello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: basesdk_tech_jni_TestHello
* Method: hello
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_basesdk_tech_jni_TestHello_hello
(JNIEnv *, jclass, jstring);
#ifdef __cplusplus
}
#endif
#endif
3.打开Dev C++ ,新建工程->DLL:工程属性选择“C工程”。把文件basesdk_tech_jni_TestHello.h添加到工程中,最终dllmain.c代码如下:
#include <windows.h>
#include <basesdk_tech_jni_TestHello.h>
JNIEXPORT void JNICALL Java_basesdk_tech_jni_TestHello_hello(JNIEnv *env, jclass obj, jstring jMsg)
{
const char *strMsgPtr = (*env)->GetStringUTFChars(env,jMsg,0);
MessageBox( 0, strMsgPtr,"Message box from Dev C++ ", 0 );
(*env)->ReleaseStringUTFChars(env, jMsg, strMsgPtr);
}