JAVA通过JNI调用本地dll

JAVA通过JNI调用本地dll

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

你可能感兴趣的:(JAVA通过JNI调用本地dll)