Linux 环境下java 调用SO

本文详细记录了在Linux系统中,Java如何调用本地的SO库文件的过程,包括编写Java代码、生成JNI头文件、编写C代码、编译生成SO文件以及在Eclipse中正确调用SO文件的步骤。通过这些步骤,可以解决Java程序与本地C代码交互的问题。

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

这几天一直在弄linux环境下java调用so文件的问题,网上例子也很多,不过有些细节写的不是很全面,导致我需要参考多方面的实例才能得出结果,现在整理个完整细节版

1 、编写java代码

package net.lu; 
public class HelloJNI
{ 
static
{ 
System.loadLibrary("HelloJNI"); 
} 
public native static int get(); 
public native static void set(int i);
public static void main(String[] args)
{ 
	HelloJNI test = new HelloJNI(); 
	test.set(10);
	 System.out.println(test.get()); 
}
2、在HelloJNI.java文件所在目录下编译.java文件。

javac HelloJNI.java

3、生成.h头文件,需要注意的是,要在src目录层生成文件

... src] # javah -jni net.lu.HelloJNI

4、编写.c 文件

#include "net_wangliping_HelloJNI.h"
int i = 0;
JNIEXPORT jint JNICALL Java_net_wangliping_HelloJNI_get(JNIEnv *env, jclass jc)
{
  return i;
}
JNIEXPORT void JNICALL Java_net_wangliping_HelloJNI_set(JNIEnv *env, jclass jc, jint j)
{
  i =
2*j;
}

5、生成.so文件

[root@turbolinux src]# gcc -I/usr/java/jdk1.5.0_13/include/linux -I/usr/java/jdk1.5.0_13/include -fPIC -shared -o libHelloJNI.so HelloJNI.c

6、eclipse 调用SO文件

出错很正常,如


最简单的方式,调用 System.out.println(System.getProperty("java.library.path"));

得到/usr/java/jdk1.5.0_13/jre/lib/i386,将SO文件放在该目录下

运行java程序,输出了由C语言函数计算出的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值