JNI基本使用
适合有一定jni知识的人
我的环境:Eclipse3.5,VS2008,JDK1.6.18
1 首先获取开发工具。这个还是自己去找吧
2 在Eclipse下新建Java工程Hello,并进行包com.zl,在包下新建类Hello.java
图一 工程截图
代码:
package com.zl;
public class Hello {
public native int add(int a, int b);
public native int sub(int a, int b);
}
主要定义两个本地调用方法作为测试方法
3 打开命令行,找到自己工程所在目录,定位到bin目录,执行javah -jni com.zl.Hello生成C/C++头文件
图二 C/C++头文件生成截图
4 打开VS2008,新建win32控制台应用程序,并选择应用类型为dll
图三 新建win32应用程序
图四:选择类型为dll,并勾选“导出符号”
5 将先前生成的头文件com_zl_Hello.h以及jdk/include下的jni.h和jdk/include/win32下的jawt_md.h和jni_md.h复制到工程下面,并在VS中将头文件添加进工程
图五:添加头文件
6 修改com_zl_Hello.h中的#include <jni.h>改为#include "jni.h",因为jni.h作为用户文件非系统文件,需要修改。然后在源文件中添加C++源文件com_zl_Hello.cpp,其实现代码如下:
#include "stdafx.h"
#include "com_zl_Hello.h"
JNIEXPORT jint JNICALL Java_com_zl_Hello_add
(JNIEnv *env, jobject obj, jint a, jint b) {
return (a+b);
}
JNIEXPORT jint JNICALL Java_com_zl_Hello_sub
(JNIEnv *env, jobject obj, jint a, jint b) {
return (a-b);
}
7 执行生成操作,将会在工程上级的DEBUG目录下找到hello.dll文件
8 Eclipse中的操作:将Hello工程导出为Hello.jar包后,新建CallJava工程
Hello.jar包,并将hello.dll放到CallJava工程的根目录下。新建Java文件,调用相关代码,查看结果。
public static void main(String[] args) {
//加载hello.dll库
System.loadLibrary("hello");
Hello hello = new Hello();
//调用add方法
System.out.println(hello.add(1, 2));
hello.sub(2, 1);
}