62,614
社区成员
发帖
与我相关
我的任务
分享
package com.yujie.util;
public class MatchClassLoader {
//比对指纹模板本地接口,ARegTemplate是登记模板,AVerTemplate是比对模板,比对成功返回True,失败返回False。
public native boolean process(String ARegTemplate, String AVerTemplate);
public MatchClassLoader(){}
static{
//System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("matchload");//把Match.dll复制到tomcat_home/bin
}
//使用单例模式,注意这是private 只供内部调用
private static MatchClassLoader instance = new MatchClassLoader();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static MatchClassLoader getInstance() {
return instance;
}
/**
* 比对方法
* @param reg
* @param ver
* @return
*/
public static boolean match(String reg,String ver){
if(reg==null || ver ==null){
return false;
}else if(reg.indexOf("/////")!=-1 || ver.indexOf("/////")!=-1){
//System.out.println("不能有转义符");
//return false;
}
return MatchClassLoader.getInstance().process(reg,ver);
}
}
#include <jni.h>
#include "com_yujie_util_MatchClassLoader.h"
#include<stdio.h>
#include <windows.h>
#include <string.h>
JNIEXPORT jboolean JNICALL Java_com_yujie_util_MatchClassLoader_process
(JNIEnv * env, jobject obj, jstring str1, jstring str2){
//printf("Hello Java_com_yujie_util_MatchClassLoader_process !\n");
//把jstring转成c的char
const char *cstr1 = (*env)->GetStringUTFChars(env, str1, 0);
const char *cstr2 = (*env)->GetStringUTFChars(env, str2, 0);
typedef jboolean(* TESTDLL)(jstring a,jstring b);
HINSTANCE hmod;
TESTDLL lpproc =NULL;
jboolean result=0;//返回结果
//加载DLL
hmod = LoadLibrary("Match.dll");
if(hmod == NULL) {
printf("hmod is null Not found Match.dll ! Please check Runtime environment \n");
return result;
}
//调用Process方法
lpproc = (TESTDLL)GetProcAddress(hmod,"Process");
//printf("debug \n");
result = lpproc(cstr1,cstr2);
FreeLibrary(hmod);
return result;
}