Linux eclipse 通过jni调用C动态库

本文介绍了在Eclipse中创建Java项目进行JNI开发的详细步骤。包括创建项目、类,实现Java代码并链接.so文件,生成.h文件,编写.c和makefile进行编译,处理.so文件的放置,最后在Java代码中编写JNI调用并展示运行结果。

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

1、用eclipse创建java project,命名为jniTest
2、创建main class和native class,如下图
native
3、MyNative.java实现如下,链接libHelloJNI. so

package jniTest;

public class MyNative {
	public MyNative() {
		System.loadLibrary("HelloJNI");
	}
	
	public static native void printHello();
}

4、生成.h文件
在MyNative.java的上一级目录下执行命令

javah jniTest.MyNative

生成jniTest_MyNative.h文件

5、编写.c

#include <stdio.h>
#include "jniTest_MyNative.h"

JNIEXPORT void JNICALL Java_jniTest_MyNative_printHello(JNIEnv *env, jobject c)
{
    printf("Hello JNI!!\n");
}

6、编写makefile并编译除libHelloJNI.so

BIN=libHelloJNI.so
CC=gcc
CFLAGS = -shared -fPIC
LIBS=

INCS=-I. -I /usr/lib/jvm/java-8-openjdk-amd64/include -I /usr/lib/jvm/java-8-openjdk-amd64/include/linux
SRCS:=$(wildcard *.c)
COBJS:=$(SRCS:.c=.o)

all:$(BIN)

$(COBJS) : %.o: %.c
	$(CC) -c $< -o $@ $(INCS) $(CFLAGS)

$(BIN):$(COBJS)
	$(CC) -o $(BIN) $(COBJS) $(LIBS) $(CFLAGS)

clean:
	rm $(BIN) $(COBJS)

7、执行如下命令将libHelloJNI.so拷贝到/usr/lib目录下

sudo cp libHelloJNI.so /usr/lib

也可以将 .so放置到工程目录下,这样就不需要拷贝到/usr/lib目录下,操作如下:
a、在工程目录下建立libs目录
b、在eclipse src目录下邮件点击,选择“properties” -> “Native Library” -> "Workspace…"选择libs目录即可
local
8、在Main.java中编写jni调用

package jniTest;

public class Main {
	public static void main(String[] args) {
		MyNative myNative = new MyNative();
		myNative.printHello();
	}
}

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值