編寫BoostRegexStrategy.java
package com;
public class BoostRegexStrategy {
static{
try{
System.loadLibrary("boost_regex");
}catch(UnsatisfiedLinkError e){
//TODO
}
}
public native boolean find(String text, String regex)throws Exception;
}
編寫用c/c++ native方法的實現
用javah生成c語言頭文件:
#include "com_BoostRegexStrategy.h"
#include <boost/regex.hpp>
bool find(const char* text, const char* regex)
{
boost::regex reg(regex);
return boost::regex_search(text, reg);
}
JNIEXPORT jboolean JNICALL Java_com_BoostRegexStrategy_find
(JNIEnv * env, jobject obj, jstring jtext, jstring jregex)
{
//從參數字符串取得指向字符串UTF-8的指針
const char* text = env->GetStringUTFChars(jtext, JNI_FALSE);
const char* regex = env->GetStringUTFChars(jregex, JNI_FALSE);
bool matchResult = find(text, regex);
env->ReleaseStringUTFChars(jtext, text);
env->ReleaseStringUTFChars(jregex, regex);
return (jboolean)matchResult;
}
生成libboost_regex.so文件(動態鏈接庫)
#cp /usr/local/include/boost/libboost_regex.so.1.50.0 $my_lib