JNI技术实战

JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
一、JNI开发程序的一般步骤
1、 编写java中的调用类
2、 用javah生成c/c++原生函数的头文件
3、c/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)
4、将项目依赖的所有原生库和资源加入到java项目的java.library.path
5、生成java程序
6、发布java应用和dll库
二、JNI程序开发实例
1、TestHello.java
public class TestHello {
	
	static{
		System.out.print(System.getProperty("java.library.path"));
		System.loadLibrary("TestHello");
	}
	
	public static native void hello(String msg);
	
	public static void main(String[]args){
		hello("Hi, Wu Yunmin!");
	}

}

编译生成TestHello.class文件。
2、run -> cmd,执行 javah TestHello,生成TestHello.h文件;
3、打开VC6.0,新建工程TestHello


在弹出窗口选择“一个简单的DLL工程”


4、打开项目所在的文件目录,将TestHello.h文件复制到此项目文件目录下。
5、选择VC6.0文件目录栏下的“FileView”选项卡,在Header Files上点击右键,选择Add Files to Folder…。选择TestHello.h文件,点击OK。
6、打开StdAfx.h文件,再最后面添加:
#include <jni.h>
#include "TestHello.h"

7、在TestHello.cpp中添加如下代码:
//方法名命名规则:Java + "_" + java的类名 + "_" + java类下的方法;如:Java_TestHello_hello
JNIEXPORT void JNICALL Java_TestHello_hello(JNIEnv * env, jclass obj, jstring jMsg)
{
    const char *strMsgPtr = env->GetStringUTFChars( jMsg , 0);   
 
       MessageBox( 0, strMsgPtr,"Message box from VC++ ", 0 );
 
       env->ReleaseStringUTFChars( jMsg, strMsgPtr); 
 
}

8、在VC6.0的菜单上选择Tools-Options…,打开选项对话框。在Directories文件夹,添加上jdk所在文件夹下的include和include\win32文件夹。



点击VC上的菜单项Build-Build All,生成TestHello.dll。
9、将TestHello.dll复制到TestHello.class所在的文件夹下。
10、run -> cmd,执行java TestHello

如有不对之处,请指正。

  • 大小: 82 KB
  • 大小: 68.5 KB
  • 大小: 61.8 KB
  • 大小: 34.7 KB
  • 大小: 44.7 KB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值