Windows平台上的JNI学习--->MyJni.java

一、首先是java源文件 MyJni.java

package org.mizhongqin.jni;

public class MyJni {
	//native method
	public native void display();
	public native double sum(double x,double y);
	static {
		System.loadLibrary("Myjnid");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new MyJni().display();
		System.out.println(new MyJni().sum(1.0, 2.0));
		

	}

}

 二、生成 MyJni.class 文件, org_mizhongqin_jni_MyJni.h头文件

    

在D:\workspace\JAVA\src\org\mizhongqin\jni\ 下可以看到 MyJni.class 文件

在D:\workspace\JAVA\src\可以看到org_mizhongqin_jni_MyJni.h 文件,内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mizhongqin_jni_MyJni */

#ifndef _Included_org_mizhongqin_jni_MyJni
#define _Included_org_mizhongqin_jni_MyJni
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     org_mizhongqin_jni_MyJni
 * Method:    display
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_mizhongqin_jni_MyJni_display
  (JNIEnv *, jobject);

/*
 * Class:     org_mizhongqin_jni_MyJni
 * Method:    sum
 * Signature: (DD)D
 */
JNIEXPORT jdouble JNICALL Java_org_mizhongqin_jni_MyJni_sum
  (JNIEnv *, jobject, jdouble, jdouble);

#ifdef __cplusplus
}
#endif
#endif

 

 

三、然后是 C/C++源文件 MyJni_c.cpp

//必须的头文件jni.h

#include <jni.h>

//导入我们需要实现的本地方法

#include "org_mizhongqin_jni_MyJni.h"

#include <stdio.h>

 

JNIEXPORT void JNICALL Java_org_mizhongqin_jni_MyJni_display

  (JNIEnv *env, jobject obj)

{

    printf("Hello World tom!!");

    return;

}

 

JNIEXPORT jdouble JNICALL Java_org_mizhongqin_jni_MyJni_sum

  (JNIEnv *env, jobject obj, jdouble a, jdouble b)

{

    return a + b;

}

四、生成DLL文件

D:\Program Files\Java\jdk1.6.0_21\include\jni.h

D:\Program Files\Java\jdk1.6.0_21\include\win32\jawt_md.h

D:\Program Files\Java\jdk1.6.0_21\include\win32\jni_md.h

注意:

上面是JDK安装路径下include目录下的jni.h和 win32目录下的jawt_md.h jni_md.h 三个文件

把jni.h jawt_md.h jni_md.h 拷贝到D:\Program Files\Microsoft Visual Studio 10.0\VC\include 即Visual Studio 安装目录下的 \VC\include目录中

同时把第二步生成的org_mizhongqin_jni_MyJni.h拷贝到 org_mizhongqin_jni_MyJni.h 便于执行cl 命令,即:

结果正式生成Myjnid.dll文件

五、配置Java工程的DLL库路径 ,运行MyJni.java

运行结果:

 

 

 

 

 

 

posted @ 2013-05-09 15:01  Davim  阅读(424)  评论(0编辑  收藏  举报