无法使用类型为 'jobject'(又名 '_jobject *')的右值初始化 'jstring' 类型(又名 '_jstring *')的变量



>有人知道如何解决错误吗?

JNIEXPORT jstring JNICALL JAVA_com_pfc_camera_ndkmain_MainActivity_compresion(JNIEnv* env, jobject obj, jobjectArray jargv){

//jargv is a Java array of Java strings
int argc = env->GetArrayLength(jargv);
typedef char *pchar;
pchar *argv = new pchar[argc];
int i;
for(i=0; i<argc; i++)
{
jstring js = env->GetObjectArrayElement(jargv, i); //A Java string
const char *pjc = env->GetStringUTFChars(js); //A pointer to a Java-managed char buffer
size_t jslen = strlen(pjc);
argv[i] = new char[jslen+1]; //Extra char for the terminating null
strcpy(argv[i], pjc); //Copy to *our* buffer. We could omit that, but IMHO this is cleaner. Also, const correctness.
env->ReleaseStringUTFChars(js, pjc);
}
//Call main
Principal *pa=Principal::CreateInstance(argc,argv);
pa->Run();
pa->FreeInstance();
//Now free the array
for(i=0;i<argc;i++)
delete [] argv[i];
delete [] argv;

}

我知道错误可能来自不做铸造,但我不是很清楚

[ https://i.stack.imgur.com/bOWKZ.png][1]

似乎问题已经解决了,现在我得到另一个错误,但我不明白我是否传递了两个参数 js 和 pjc

[ https://i.stack.imgur.com/UHCAR.png][1]

C++ 您必须使用显式转换为所需类型。

jstring js = (jstring)env->GetObjectArrayElement(jargv, i);

您可以了解 jni 编程here

关于您的其他问题,请执行以下操作:

const jbyte *pjc = env->GetStringUTFChars(js, NULL);

相关内容

最新更新