1,编写调用端代码(文件名:DllCaller.java)
-
package com.whut.qinchao.jni;
-
-
//qinchao 2013/12/31
-
-
public class DllCaller {
-
-
static {
-
-
/**
-
-
* 加载需要的类库(因为DllCaller.dll还需要依赖本地的类库,所以需要在它之前加载被依赖库)
-
-
* 建议存放项目根目录,不然无法加载,或者通过不同类加载器加载导致无法正常识别.
-
-
*/
-
-
System.loadLibrary("msvcp100d");//msvcp100d.dll
-
-
System.loadLibrary("msvcr100d");//msvcr100d.dll
-
-
System.loadLibrary("DllCaller");//DllCaller.dll
-
-
}
-
-
public native static int VrpJniCaller(boolean line,boolean wnd,String path);
-
-
public static void main(String[] args) {
-
-
String InputPath = "F:\\WebVrpData";
-
-
DllCaller.VrpJniCaller(false,false,InputPath);
-
- }
- }
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
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文件拷贝到当前目录。