jni入门实现

public class Main {
//    static {
//        System.loadLibrary("dlltest");
//    }
    public static void main(String[] args) {
        System.out.println(sum(100, 2));
    }
    //本地方法使用native关键字标记,无需任何实现,交给C语言实现
    public static native int sum(int a, int b);
}

编译运行,生成相应的字节码文件
在这里插入图片描述

javah -classpath out/production/qingkong -d ./jni Main   

在这里插入图片描述
控制台输入相应的语句(qingkong是B站up主青空霞光,感兴趣的可以去关注一下)
回车后idea项目刷新一下会出现以下页面
在这里插入图片描述
在这里插入图片描述
下载一个devc++
打开devc++
文件->新建->项目
在这里插入图片描述
点击确定,保存到一个相应的文件夹下
在这里插入图片描述
保存完后会自动出现以下两个文件
在这里插入图片描述
dll.h文件注释掉一段代码
在这里插入图片描述
dllmain.c注释掉这段代码
在这里插入图片描述
编写相应的代码
在这里插入图片描述

JNIEXPORT jint JNICALL Java_Main_sum
  (JNIEnv * env, jclass c , jint a, jint b){
  	return a + b;
  };

dllmain.c还要加上相应的头文件
在这里插入图片描述

#include "jni.h"

然后运行的话还需要两个文件jni.h文件和jni_md.h
jni.h在你所下的jdk文件里面,windows文件路径(如下)
在这里插入图片描述
jni_md.h在win32里面
在这里插入图片描述
将jni.h和jni_md.h复制到刚刚C语言(dll)项目路径下
在这里插入图片描述
然后回devc++里面编译保存确定,会出现一个后缀为dll的文件(我之前弄过一遍所以出现了两个dll文件,你们的话应该只有一个)
在这里插入图片描述
将这个文件复制粘贴到idea项目下
在这里插入图片描述
dll文件和其它几个文件是同级的,取消静态代码块的注释
在这里插入图片描述
然后就可以运行了
结果:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值