JNI调用CPP程序

创建JNITest类,并包含一个未定义的native方法shit()在这里插入图片描述

cmd窗口中cd 到项目的src目录下(此处可能根据jdk等版本有差异?),并执行javah -jni practice.JNITest(类的全限定类名 ) :
在这里插入图片描述
执行成功后在项目的bin目录下会生成相应的JNI头文件:
在这里插入图片描述
该头文件中引入了一个JNI头文件,之后会说,同时该头文件定义了JNITest类中需要在cpp中被实现的native方法,注意需要在此处同时include一个jni_md.h的头文件,否则JNIEXPORT会报错,同样一会会说:

在这里插入图片描述
在这里插入图片描述

在VS中创建DLL动态链接库项目,并引入practice_JNITest.h该文件。删除原来的DLL中的方法,并实现在头文件中所定义的需要实现的native方法:

在这里插入图片描述
此时在practice_JNITest.h中所引入的两个头文件会报错因为没有找到,到JDK根目录的include目录下找到jni.h:
在这里插入图片描述
并在include/win32中找到jni_md.h:
在这里插入图片描述

将这两个文件放在CPP项目的根目录下,并在VS中右键项目,选择属性,C/C++:常规,并在附加包含目录中设置相应的头文件地址:
在这里插入图片描述

在引入了practice_JNITest.h的cpp文件中开始重写相应的native方法:
在这里插入图片描述编译之前确定编译的为32位还是64位dll(根据jdk来),确定后开始编译,编译完毕后如果是64位会在cpp项目根目录下生成x64文件夹,并在其中的debug目录中可以获取dll文件,若是32位则再项目根目录中的debug目录下就可以找到。找到后将相应的dll文件复制到Java项目的根目录下:
在这里插入图片描述

再Java程序中加载动态链接库,并调用native方法,查看结果:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值