jni 从c传递map到java_JNI简单实例---java调用c语言(转+理解)

实例

(1)创建项目

在Eclipse中创建一个java项目,新建HelloWorld类,代码如下:

package Hello;

public class HelloWorld {

static {

System.loadLibrary("HelloWorld");

}

private native void print();

public static void main(String args[]) {

new HelloWorld().print();

}

}

项目结构图:

40b657d0855382ca729d1210ae6dbc59.png

(2)编译java文件:

》打开指令终端,进入/src路径,编译HelloWorld.java文件

javac Hello/HelloWorld.java

》编译头文件

javah -classpath . -jni Hello.HelloWorld

注:-classpath . 表示从Hello中导入HelloWorld .class文件;-jni 表示生成JNI-style 的头文件

注意编译路径

》src目录下面就会生成一个Hello_HelloWorld.h的头文件,将文件移到Hell文件夹下;头文件内容不能修改!!!!!

(3)实现Hello_HelloWorld.h头文件中的方法,生成可供java调用的动态链接库

》创建HelloWorld.c文件

#include

#include

#include "Hello_HelloWorld.h"

JNIEXPORT void JNICALL Java_Hello_HelloWorld_print

(JNIEnv *env, jobject obj)

{

printf("HelloWorld JNI!\n");

return;

}

》在src路径下运行

gcc -shared -I $JAVA_HOME/include/ -I$JAVA_HOME/include/linux/  Hello/HelloWorld.c -o  Hello/libHelloWorld.so

注:-shared指的是编译共享库,后缀名为.so,-I是添加搜索目录;$JAVA_HOME替换成jdk的路径。

最终生成文件:

86c3e710a0cf3c47372f80b59ab99f91.png

(4)eclipse调用

将动态库的搜索路径添加到项目中,Eclipse中:

Project->properties->Java Build Path->Source,设置Native Library Location。然后直接运行HelloWorld.java文件。结果如下图:

fcf74e2655e4c657c256f04b6a00f0c7.png

这里的c文件已经被我修改,正确显示应该为"HelloWorld JNI!”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值