JNI - Java Native Interface
来源:互联网 发布:伯明翰学派 知乎 编辑:程序博客网 时间:2024/04/30 07:49
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 1 编写Java代码 JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *env, jobject obj)
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
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"
{
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
- JNI:Java Native Interface
- JNI(java native interface)
- JNI - Java Native Interface
- JNI:Java Native Interface
- Java Native Interface (JNI)
- Java Native Interface (JNI)
- JNI:Java Native Interface
- JNI:Java Native Interface
- JNI (Java Native Interface)是什么
- JNI技术(Java Native Interface)
- JNI技术(Java Native Interface)
- Java Native Interface(JNI)简介
- JNI(Java Native Interface)
- Java Native Interface Specification(JNI)
- Java Native Interface (JNI)简介
- JNI(Java Native Interface)_01
- JNI(Java Native Interface)_02
- JNI(Java Native Interface)_03
- 转@vector list 与deque
- Java线程:新特征-障碍器
- 一个真实的拳王阿里
- 数据建模与范式
- reactos操作系统实现(147)
- JNI - Java Native Interface
- KNI
- break, next, redo, retry
- 最近想学C++
- NETMATE学习笔记
- 编译CLDC1.1
- js-window对象的方法和属性资料
- 编译MIDP2.0
- Java线程:大总结