JNI - Java Native Interface

JavaTM Native Interface (JNI) is a standard programming interface for writing Java native methods and embedding the JavaTM virtual machine* into native applications. The primary goal is binary compatibility of native method libraries across all Java virtual machine implementations on a given platform.

以下内容收集自互联网,在Java的文档里也有关于JNI的详细说明

Microsoft Windows XP Professional Version 2002 Service Pack 3
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
Microsoft Visual C++ 6.0

1 编写Java代码
public class Hello
{
    static
    {
        System.loadLibrary("hello"); // 加载后面要生成的dll
    }
    
    public native void sayHello(); // native方法不需要实现
    
    public static void main(String[] args)
    {
        new Hello().sayHello();
    }
}


2 编译Java代码:javac Hello.java


3 生成头文件:javah Hello
生成的头文件里有一个函数原型:
JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *, jobject);
这个函数就对应前面Java代码中的sayHello方法


4 实现函数
#include "jni.h"

JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *env, jobject obj)
{
    printf("Hello, JNI!/n");
}
将这段代码保存,例如保存为Hello.c 
必须引用jni.h,这个文件在jdk里面,例如D:/jdk1.6/include里


5 生成dll
运行VC的Bin目录下的文件VCVARS32.BAT,将VC加入环境变量。运行命令
cl -I D:/jdk1.6/include -I D:/jdk1.6/include/win32 -LD Hello.c -Fehello.dll
-Fe之后的hello.dll就是Java代码System.loadLibrary("hello")要载入的dll


6 运行Java代码:java Hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值