linux/Ubuntu 下使用 java 调用 so 动态链接库详细步骤

本文详细介绍了在Ubuntu系统中,如何使用Java通过JNI调用C++编译的动态链接库(so文件)。步骤包括编写Java类,设置包名和工作目录,使用System.load或System.loadLibrary加载so库,修改LD_LIBRARY_PATH,编译Java类,生成头文件,编写C++源文件,链接生成so文件,以及最终测试调用的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章介绍的方法为小弟查找资料摸索出来的,为方便以后学习使用,同时提供给刚接触 JNI 的小白一个 demo

文中有错误的概念请大神们不吝教诲~~~

1、编写 java 类,先上代码

package com.demo.jni;
 
public class HelloJNI {
	
	// 声明 so 库中的方法
	public native static String sayHi(String name);
 
	// 载入 so 动态链接库
	static {
		System.load("/home/admin/main.so");
	}
 
	// java 类入口函数
	public static void main(String[] args) {
		System.out.println(sayHi("It's a result return by main.so file!!"));
	}
 
}


需要注意的有一点,java 类中的包名需要有对应的层级关系
比如上述代码中的包名为 com.demo.jni,终端的默认工作目录为 /home/username/
那么,在 /home/username/ 下需要建立 com 文件夹,com 文件夹下建立 demo文件夹,然后 demo下建立 jni 文件夹,jni 文件夹中存放 HelloJNI.java 类文件
当然,你可以将 /home/username/ 更换为任意你想要使用的工作目录,但是必须保证的是工作目录下能通过java类的完整包名找到该类


代码部分就没什么可以说的了,我们在 so 动态链接库中需要实现的函数为 sayHI(String name),该函数会把我们传入的字符串直接返回给我们,功能就这么简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值