使用JNI将字符串数组从java传递给C.

我有一个字符串数组,如{"myname","yourname","hisname"} ,我试图使用JNI将此数组发送到C. 我找不到任何明确的解决方案。 我试图把这个字符串作为一个chararray但没有成功。

有没有办法做到这一点?

您可以编写一个简单的函数,它接受一个jobjectArray对象,将每个对象jobjectArray为jstring,然后在其上调用GetStringUTFChars

喜欢这个:

 void MyJNIFunction(JNIEnv *env, jobject object, jobjectArray stringArray) { int stringCount = env->GetArrayLength(stringArray); for (int i=0; iGetObjectArrayElement(stringArray, i)); const char *rawString = env->GetStringUTFChars(string, 0); // Don't forget to call `ReleaseStringUTFChars` when you're done. } } 

是的,有办法。 您可以将Java String[]从Java端传递给您的本机方法,并将其作为jobjectArray传递给C / C ++端。 然后,您将使用GetObjectArrayElement()在给定索引处获取jstring ,然后使用GetStringUTFChars()GetStringChars()来获取指向底层字符串数据的C / C ++指针。

如果您不了解它, JNI Book是一个有价值的参考。

它可以通过以下方式完成:

 (JNIEnv *env, jobject object, jobjectArray prdctini) { const char *param[20]; jsize stringCount = (*env).GetArrayLength(prdctini); for (int i=0; i
		      	

记得要用

 env->GetArrayLength(stringArray);