1,编写调用端代码(文件名:DllCaller.java)


  1. package com.whut.qinchao.jni;

  2. //qinchao 2013/12/31

  3. public class DllCaller {

  4. static {

  5. /**

  6.  * 加载需要的类库(因为DllCaller.dll还需要依赖本地的类库,所以需要在它之前加载被依赖库)

  7.  * 建议存放项目根目录,不然无法加载,或者通过不同类加载器加载导致无法正常识别.

  8.  */

  9. System.loadLibrary("msvcp100d");//msvcp100d.dll

  10. System.loadLibrary("msvcr100d");//msvcr100d.dll

  11. System.loadLibrary("DllCaller");//DllCaller.dll

  12. }

  13. public native static int VrpJniCaller(boolean line,boolean wnd,String path);

  14. public static void main(String[] args) {

  15. String InputPath = "F:\\WebVrpData";

  16. DllCaller.VrpJniCaller(false,false,InputPath);

  17. }
  18. }


2,执行如下命令生成.h文件:

javac .\com\whut\qinchao\jni\DllCaller.java;

javah -jni com.whut.qinchao.jni.DllCaller会生成一个com_whut_qinchao_jni_DllCaller.h文件(将com_whut_qinchao_jni_DllCaller.h中#include改成#include“jni”)

 

3,VS2010 创建动态连接库:

3.1,新建项目->Win32控制台程序->DLL(勾选“空工程”)。

3.2,新建*.cpp文件,对com_whut_qinchao_jni_DllCaller.h中的方法    (JNIEXPORT jint JNICALL Java_com_whut_qinchao_jni_DllCaller_VrpJniCaller(JNIEnv *, jclass, jboolean, jboolean, jstring);)进行实现。

3.3,将jni.h和jni_md.h文件拷贝到当前目录。

 

09-19 00:33