Linux中关于JAVA调用C生成的.so动态链接库
2016-03-23 11:20
666 查看
第一步.首先,我们先写个JAVA类:
第二步.进行编译: javac HelloJNI.java
第三步.再编译生成.h文件: javah -jni HelloJNI
上图为生成的.h文件。可以看出我们在JAVA类中写的native方法到了这里面来。
第四步. 编写C代码 文件命名为HelloWorld.c跟前面加载链接库相对应 .
第五步. 生成.o文件 再生成.so文件
gcc -c -fPIC -o HelloWorld.o HelloWorld.c //生成.o
gcc -shared -o libHelloWorld.so HelloWorld.o //生成.so 这里一定要注意用lib开头这样才可以系统才可以找到。如果不加lib 不能找到该文件
第六步. 再让动态链接库输出可用
sudo ldconfig
第七步. 把.so文件放到JAVA.library.path中
可以用新写个方法 :
System.out.println(System.getProperty(“java.library.path”));
输出库的路径。放到其中就可以
第八步 便可以运行JAVA: java HelloJNI
得到结果 1554
public class HelloJNI { static { System.loadLibrary("HelloWorld"); //链接库的名字 } public native static void setNum(int num); //链接库的方法 public native static int get();//链接库的方法 public static void main(String[] args) { HelloJNI test = new HelloJNI(); test.setNum(666); System.out.println(test.get()); } }
第二步.进行编译: javac HelloJNI.java
第三步.再编译生成.h文件: javah -jni HelloJNI
上图为生成的.h文件。可以看出我们在JAVA类中写的native方法到了这里面来。
第四步. 编写C代码 文件命名为HelloWorld.c跟前面加载链接库相对应 .
#include "HelloJNI.h" int result=888; //注:JAVA的类型跟C的类型转换 可以用JNI来操作 //有点类似继承的样子 JNIEXPORT void JNICALL Java_HelloJNI_setNum (JNIEnv * env, jclass jc, jint num){ result+=num; } JNIEXPORT jint JNICALL Java_HelloJNI_get (JNIEnv * env, jclass jc){ return result; }
第五步. 生成.o文件 再生成.so文件
gcc -c -fPIC -o HelloWorld.o HelloWorld.c //生成.o
gcc -shared -o libHelloWorld.so HelloWorld.o //生成.so 这里一定要注意用lib开头这样才可以系统才可以找到。如果不加lib 不能找到该文件
第六步. 再让动态链接库输出可用
sudo ldconfig
第七步. 把.so文件放到JAVA.library.path中
可以用新写个方法 :
System.out.println(System.getProperty(“java.library.path”));
输出库的路径。放到其中就可以
第八步 便可以运行JAVA: java HelloJNI
得到结果 1554
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Linux socket 初步
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 介绍一款信息管理系统的开源框架---jeecg
- 10 篇对初学者和专家都有用的 Linux 命令教程
- 如何组织构建多文件 C 语言程序(二)
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法