IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    JAVA通过JNI调用本地dll

    天下发表于 2015-12-04 03:48:00
    love 0
    JAVA通过JNI调用本地dll 

    一、JAVA中所需要做的工作 
    Java工程Example01
    第一步:创建Java类,类名:TestJni 在里面定义一个本地方法(用native关键字修饰的方法)
    package NeoWay;
    public class TestJni 
    {
        static {
                System.loadLibrary("neoway");
        }     
        public native static void sayHello();
    }

    第二步:生成javah 说需要的.class文件
    在DOS窗口中进入工程所在的src文件夹:
    javac NeoWay\TestJni.java

    第三步:使用javah命令生成本地方法的C++头文件 
    @rem javah 包.类
    javah NeoWay.TestJni  
    在DOS窗口中进入工程所在目录,然后执行javah NeoWay.TestJni命令,执行完之后就会在当前目录生成一个后缀名为.h的头文件

    第四步:新建VC++的dll工程(附件选项:空项目),工程名为:neoway
    将相关的路径加入VC++的include
    C:\Program Files\Java\jdk1.7.0_80\include
    C:\Program Files\Java\jdk1.7.0_80\include\Win32
    将生成的NeoWay_TestJni.h引入该VC工程

    NeoWay_TestJni.h内容如下:
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class NeoWay_TestJni */

    #ifndef _Included_NeoWay_TestJni
    #define _Included_NeoWay_TestJni
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     NeoWay_TestJni
     * Method:    sayHello
     * Signature: ()V
     
    */
    JNIEXPORT void JNICALL Java_NeoWay_TestJni_sayHello
      (JNIEnv *, jclass);


    #ifdef __cplusplus
    }
    #endif
    #endif

    新建一个 NeoWay_TestJni.cpp,内容如下:
    #include "NeoWay_TestJni.h"
    JNIEXPORT void JNICALL Java_NeoWay_TestJni_sayHello (JNIEnv *, jclass)
    {
        printf("Java_NeoWay_TestJni_sayHello() Entry\r\n");
    }

    //Example01
    import NeoWay.TestJni;
    public class Example01 
    {
        public static void main(String[] args) 
        {
            System.out.println("main() entry()");
            TestJni.sayHello();
        }
    }


    第五步:测试运行
    将VC++工程生成neoway.dll拷贝至Java工程Example01目录
    javac Example01.java
    java Example01

    输出:
    main() entry()
    Java_NeoWay_TestJni_sayHello() Entry


    天下 2015-12-04 11:48 发表评论


沪ICP备19023445号-2号
友情链接