我是JNI接口的新手,我有以下代码 我的java代码调用JNI代码的runDemo()方法 公共类NonfreeJNILib {
static {
try {
// Load necessary libraries.
System.loadLibrary("opencv_java");
System.loadLibrary("nonfree");
System.loadLibrary("nonfree_jni");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load.\n" + e);
}
}
public static native void runDemo();
}
这是我的JNI代码(CPP代码),名为
int run_demo();
extern "C" {
JNIEXPORT void JNICALL Java_com_example_nonfreejnidemo_NonfreeJNILib_runDemo(JNIEnv * env, jobject obj);
};
JNIEXPORT void JNICALL Java_com_example_nonfreejnidemo_NonfreeJNILib_runDemo(JNIEnv * env, jobject obj)
{
LOGI( "Start run_demo! \n");
run_demo();
LOGI( "End run_demo!\n");
}
int run_demo()
{
const char * imgInFile = "/sdcard/nonfree/img1.jpg";
const char * imgOutFile = "/sdcard/nonfree/img1_result.jpg";
....
...
//LOGICC
.....
}
现在我想从我的java代码中传递参数
String imgInFilePath = "/sdcard/nonfree/img1.jpg";
String imgOutFilePath = "/sdcard/nonfree/img1_result.jpg";
runDemo(imgInFilePath,imgOutFilePath);
请帮助我,我的CPP代码需要进行哪些更改才能传递上述参数。我不知道来自java的JNI通信。
感谢。