Java Native Interface例程

windows下,使用BlueJ和Pelles C编写的例程。

1.创建Java项目。

方便起见,在现有项目codes的API中创建一个包jni,创建一个类:

package API.jni;
public class JniDemo{//API.jni.JniDemo
    static {
        System.load("等一下再填");
    }

    public native int nativeAdd(int x, int y);

    public static void test() {
        System.out.println(new JniDemo().nativeAdd(100, 3));
    }
}

2.javah

cmd窗口,使用下面的命令(javah -jni  类全名),在项目的根目录下,生成一个C语言头文件

...codes>javah -jni API.jni.JniDemo

修改生成的API_jni_JniDemo.h,将#include <jni.h>改为#include "jni.h"(不知道为什么要生成尖括号)


3.创建Win64 DLL项目,随意取名C64,位置就近放在jni文件夹下。

将API_jni_JniDemo.h和它需要的jni.h(通常为D:\Program Files (x86)\Java\include)以及后者需要的jni_md.h(D:\Program Files (x86)\Java\include\win32),复制粘贴到C64文件夹下。

#include "API_jni_JniDemo.h"

JNIEXPORT jint JNICALL Java_API_jni_JniDemo_nativeAdd 
(JNIEnv * env, jobject obj, jint x, jint y){
        return x+y;
}
保存为某名.c文件。编译得到c64.dll。用c64.dll文件的绝对路径如“D:\编程导论\codes_补充\API\jni\c64\c64.dll”,将\搞成\\,替换JniDemo代码中的“等一下再填”。

System.load("D:\\编程导论\\codes\\API\\jni\\c64\\c64.dll");

运行test:4.

在BlueJ中重启JVM,修改参数nativeAdd(10, 3),运行结果:13.

常见问题:

  • 【Q】没有用过BlueJ,咋办?【A】那就用记事本好了,目录搞清楚。
  • 【Q】javah?【A】path
  • 【Q】VC++ 6.0?【A】用VS也好过VC。
  • 【Q】Cygwin?【A】能够用一下Cygwin,是最好的。大多数同学用windows,不好。

参考资料:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值