Java JNI调用so动态链接库
来源:互联网 发布:装修省钱 知乎 编辑:程序博客网 时间:2024/06/09 18:59
参考 https://segmentfault.com/a/1190000000658143 可能我的步骤更流畅一些哈哈
有个业务要做对西加加的调用,自己先了解了一下,记一下所得和步骤,注意copy代码的时候修改路径等,要不容易报UnsatisfiedLinkError那就是找不到对应的native方法
1. Java调用
package sf.gg;public class Hello{public native static int add(int x,int y); //java 代码中声明 native 方法static { System.load("/home/lance/main.so"); //以绝对路径加载so文件 }public static void main(String[] args){ System.out.println(add(1,1)); }}
2. 编译java代码(生成.class)
javac -d . Hello.java
先cd到Sources Root目录下,一般是项目的com(这里的例子是sf)的父目录,然后使用javah
javah sf.gg.Hello
4.回到原目录,可以同时把.h mv过来,编写实现add方法的C代码
#include<stdio.h>#include "sf_gg_Hello.h"JNIEXPORT jint JNICALL Java_sf_gg_Hello_add(JNIEnv *env, jclass jc, jint x, jint y){ return x+y; //简单的加法}
5.生成.o文件
第一个-I从%JAVA_HOME%/include找到jni.h,第二个-I从%JAVA_HOME%/include/linux找到jni_md.h,不加这两个参数看报错信息就明白了
gcc -fPIC -D_REENTRANT -I/home/xjs/bin/jdk1.7.0_80/include -I/home/xjs/bin/jdk1.7.0_80/include/linux -c hello.c
6.生成.so
gcc hello.o -o main.so -shared
8.运行
java sf.gg.Hello
阅读全文
1 0
- Java JNI 调用 so 动态链接库
- Java JNI 调用 so 动态链接库
- Java JNI调用so动态链接库
- java jni 调用.so动态库
- Android studio通过JNI调用动态链接库SO
- java调用so动态链接库
- JNI java调用动态链接库dll
- JNI调用动态库.so
- 调用动态链接库*.so
- Java jni 动态库 so
- 【JNI调用DLL动态库】Java使用JNI调用DLL动态链接库学习记录
- Linux JNI调用so动态库示例
- Android studio下的Android JNI调用以及动态链接库.so的生成
- AndroidStudio配置NDK/JNI,完成so动态链接库的调用
- linux下 java JNI调用C语言动态链接库
- linux下 java JNI调用C语言动态链接库
- 浅谈JNI的使用-java调用动态链接库
- linux下 java JNI调用C语言动态链接库
- POJ 3630 Phone List(Trie)
- 在java中 变量之间是如何赋值的
- Linux Shell 特殊变量
- DAG动规 uva
- python使用wordcloud创建词云
- Java JNI调用so动态链接库
- springboot之thymeleaf模板引擎章节
- Android进阶#(4/12)HTTP网络请求_HTTP请求原理
- tomcat 修改项目部署路径
- 安装Ubuntu时遇到“无法将grub-efi-amd64-signed软件包安装到/target/中”或“安装程序向硬盘复制文件时遇到错误”
- VI打开和编辑多个文件的命令
- XML生成(三):JDOM生成
- qt-opensource-windows-x86-vs2010-4.8.6 + qt-creator-windows-opensource-2.8.0
- kubernetes--资源管理