JNI HelloWorld

一.简介

  JNI是Java Native Interface的缩写

 

二.通过实例介绍 JNI的书写步骤(本实例实现java传入两个整型参数给c,c返回相加结果给java)

 1 编写带有native声明的方法的java类

 2   使用javac命令编译所编写的java类

 

package com.liurunfeng.helloworld.jni;

public class HelloWorldJNI 
{
	public native int sum(int a , int b); 

	public static void main(String[] args)
	{
		System.loadLibrary("testjni");
		HelloWorldJNI hj = new HelloWorldJNI();
		System.out.println(hj.sum(4, 2));
	}
}

 注意我们的sum()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不 包括实现,因为我们要用c/c++语言实现它。注意System.loadLibrary("testjni")这句代码,它是在静态初始化块中定义的,系统用来装载testjni共享库,这就是我们在后面生成的testjni.dll(如果在其他的操作系统可能是其他的形式,比如testjni.so)

3 使用javah ?jni java类名生成扩展名为h的头文件

   dos下 javah com.liurunfeng.helloworld.jni.HelloWorldJNI   (注意路径,要在com的当前目录下)

   生成    com_liurunfeng_helloworld_jni_HelloWorldJNI.h      (C/C++需要的头文件)

 

4 创建c动态链接文件,用visual c++ 创建 win32 动态链接库工程 创建空工程 将   com_liurunfeng_helloworld_jni_HelloWorldJNI.h加入工程 并将 jdk1.6.0_10\include\jni.h 和jdk1.6.0_10\include\win32\jni_md.h 两个头文件 拷贝到 c++工程 并修改  com_liurunfeng_helloworld_jni_HelloWorldJN I.h 将 #include<jni.h> 改成 #include "jni.h"

5 创建c++ 源文件 实现java 调用函数 (c++ 代码)

#include "com_liurunfeng_helloworld_jni_HelloWorldJNI.h"
#include <iostream>

using namespace std;

JNIEXPORT jint JNICALL Java_com_liurunfeng_helloworld_jni_HelloWorldJNI_sum(JNIEnv * evn, jobject jj, jint a, jint b)
{
	return a + b;
}

 

 

6  编译后 将在工程Debug目录下 生成testjni.dll。将此文件 加入到path里 让java应用找到.重启之前打开的eclipse

   运行java代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值