基于Dev C++开发JNI
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);
- }