jni生成dll文件

       编辑java文件,Main 类:


class Main {
   // The program begins with a call to main().
   public native void setName();
   public native void displayhellow();
   static {
      System.loadLibrary("hellow");//加载类


   }
   public static void main(String args[]) {
      // Your code here
      Main t=new Main();
      t.setName();
      t.displayhellow();
   }
}


编译:javac Main.java

生成Main.h:javah  Main

内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class Main */


#ifndef _Included_Main
#define _Included_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Main
 * Method:    setName
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Main_setName
  (JNIEnv *, jobject);


/*
 * Class:     Main
 * Method:    displayhellow
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Main_displayhellow
  (JNIEnv *, jobject);


#ifdef __cplusplus
}
#endif
#endif

把jdk安装目录下include的jni.h,win32/jni_md.h以及刚刚生成的Main.h等接下来要用到的头文件复制到VC6.0目录下include目录里面(不然的话编译时会报错:找不到 jni.h文件)

在VC6.0下,新建工程—>Win32 Dynamic-Link Library,工程名与加载类一样:hellow.->确定->选择创建一个空的DLl工程-》完成.

新建一个c或cpp文件,取名为hellow.c或hellow.cpp.实现java的native 方法.

#include "jni.h"
#include "Main.h"
#include
char name[20];


JNIEXPORT void JNICALL Java_Main_setName
(JNIEnv *env, jobject obj){
 
      printf("请输入您的姓名:\n");
 gets(name);
}


JNIEXPORT void JNICALL Java_Main_displayhellow
  (JNIEnv *env, jobject obj){
   printf("Welcome,%s\n",name);
   return;
  }

编译、连接(如果这个时候出现问题,很有可能是jni.h,jni_md.h,Main.h没拷贝到VC安装目录下的include目录下,或者是传递参数时没有给参数名)

成功后在hellow工程目录下的Debug目录下则可以找到hellow.dll文件

把hellow.dll文件拷贝到类路径下面,一般是jdk安装路径下的bin目录

OK,现在运行.class文件:java Main

可以了......

 

你可能感兴趣的:(jni生成dll文件)