zoukankan      html  css  js  c++  java
  • jni的使用方法

    我们可以通过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
    ");
          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

  • 相关阅读:
    Java
    数据同步方案(附Java源码)
    windows下强大的wmic命令行工具
    利用dokan作虚拟磁盘开发
    用apache配置多个tomcat webapp
    apache2.2+tomcat配置[转]
    tomcat webdav
    Modbus/TCP
    AI语音验证码识别
    Win10 重命名文件夹:找不到指定文件。
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5816227.html
Copyright © 2011-2022 走看看