在Ubuntu18.04中使用JNI实现java调用C++

在Ubuntu18.04中使用JNI实现java调用C++

工具:
1.emacs
2.eclipse
3.jdk

第一步 java代码的编写

在eclipse中新建一个项目JNI_test,并在该项目中新建文件demo.java,输入以上java代码。

第二步 用javah命令将java代码转换为本地接口类的头文件

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

在eclipse中的工具栏里选择project->clean…并且保证Build Automatically项是勾选的,点击Run图标,这样在JNI_test/src中将产生一个最新的demo.java文件,该文件是java代码编译后的结果。然后从终端打开JNI_test/src,输入javah -jni demo命令即可产生本地接口类头文件demo.h.

第三步 C++代码的编写

在这里插入图片描述在这里插入图片描述在这里插入图片描述
需要注意的是,如果类名是demo,在test_JNI中函数的名称必须是**[…]demo[…]**而不能是[…]Demo[…]之类的,否则会失败。

第四步 生成动态链接库

由于demo.h文件中包含了jni.h文件,而C++的文件中又要包含demo.h文件,因此jni.h必须放在一个g++编译器能够访问的地方,这里可以将/jdk1.8.0_231/include目录下的文件复制到/usr/local/include下来解决这个问题。

接着打开shell生成动态链接库:
在这里插入图片描述
其中包含了两条命令:
g++ -fpic -c test_JNI.cpp add.h add.cpp
g++ -shared -o libJNI_so_test.so test_JNI.o
在这里插入图片描述
可以在C++项目的目录下看到动态库libJNI_so_test.so已经生成了,将其拷贝到java项目下。注意该动态连接库的命名必须是lib[…].so,否则无法识别。

第五步 java加载动态链接库

在这里插入图片描述
这里在java项目所在路径新建一个文件夹JNI_test,并将前面生成的动态链接库放在里面。然后在eclipse中对读取路径进行设置:
在这里插入图片描述
在JNI_test项目处右键,选择properties,然后打开以上界面。将Native library location设置为我们存放动态链接库的路径,注意存放动态链接库的文件名必须和动态链接库保持一致,然后点击apply.

第六步 编译运行程序

在这里插入图片描述
点击Run图标可以得到最终结果。

参考资料:
[1]java调用C++的过程
[2]linux 下编译生成静态库和动态库
[3]java调用C++代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值