How to deliver a string array?
I post the code:
xx.cpp
JNIEXPORT jstring JNICALL Hello_Native(JNIEnv *env, jobject obj,jstring string)
{
const char *str = env->GetStringUTFChars(string, 0);
return env->NewStringUTF( "Hello from JNI !");
}
static JNINativeMethod gMethods[] = {
{"JniHello",const_cast<char*>("(Ljava/lang/jsting)Ljava/lang/jsting;"),(void*)Hello_Native}
xx.java
public native static String JniHello(String text);
System always prompt it has the problem when declare JniHello in gMethods and the parameter is not right.
javahwill generate it for you correctly. If your Java name isJniHelloin classMyHelloand your package iscom.hello, JNICALL function must beJava_com_hello_MyHello_JniHello. It can’t beHello_Native, you have made it up.JNINativeMethodstructjava/lang/jsting. There is not even ajava/lang/jstringif i add the missingrfor you. You are asked for the JAVA signature, not JNI. So it must bejava/lang/String.javap -sinsteadYour code has one more problem: when used
GetStringUTFChars, you must also call `ReleaseStringUTFChars’ before returning, otherwise you have a leak. But you will find this yourself sooner or later.