将字符串参数传递给Java的JNI代码

时间:2014-06-23 09:33:45

标签: java android c++ android-ndk java-native-interface

我是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通信。

感谢。

0 个答案:

没有答案