码迷,mamicode.com
首页 > 其他好文 > 详细

jni的使用方法

时间:2016-08-28 23:46:25      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

我们可以通过jni来调用c/c++程序,C/C++一般会被作为动态库的形式来供java程序调用

环境


 操作系统:Centos6.7

java: openjdk7

依赖包:java7-devel(yum install -y java7-devel)

java程序


 在hava程序中会调用本地方法,而这个本地方法使用C语言实现的。

public class HelloWorld{
       static {
           System.loadLibrary("Hello");
       }
   
       public native void DisplayHello();
   
       public static void main(String[] args){
           new HelloWorld().DisplayHello();
      }
}

编译java程序:javac HelloWorld.java

生成相应的头文件:javah -jni HelloWorld

下面是生成的HelloWorld.h的内容,其中的白色部分就是需要在C代码中实现的函数。

技术分享

C程序


#include<jni.h>
#include"HelloWorld.h"
#include<stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_DisplayHello(JNIEnv *env, jobject obj){
      printf("Hello world\n");
      return;
}

 在C程序中,我们需要包含jni.h以及刚才生成的HelloWorld.h。如果从C的角度来看,一般一个.h文件会对应一个.c文件。而.h文件中一般是函数的声明,而.c文件是具体函数的实现。HelloWorld.h中有函数的声明,而C程序中就应该有函数的实现。

这样,但是通过javah生成.h文件时,剩下的工作就是C方面的编程问题了。

将C程序生成动态库:

在生成动态库的时候需要制定头文件(jni.h)的位置,安装java依赖库的时候会将其安装到/usr/local下,所以需要用-I选项来明确指出

技术分享

执行


 在执行的时候需要指定C库的位置

技术分享

参考博文: 

http://blog.csdn.net/banketree/article/details/40535325

http://www.cnblogs.com/mandroid/archive/2011/06/15/2081093.html

jni的使用方法

标签:

原文地址:http://www.cnblogs.com/xidongyu/p/5816227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!