Вы не можете.Предполагая, что вам действительно нужно использовать эти данные как в Java, так и в C, вам нужно будет выполнить маршалинг между Java Object
и C struct
.
В вашем коде JNI вам нужно будет создать новыйJava объект и заполнить его данными.Например:
jclass clazz = env->FindClass("JFunctionArgs");
jmethodID ctor = env->GetMethodID(clazz, "<init>", "()V");
jobject obj = env->NewObject(clazz, ctor);
jfieldID urlField = env->GetFieldID(clazz, "url", "Ljava/lang/String;");
env->SetObjectField(obj, urlField, env->NewString(functionArgs.url));
... и т. Д.
(Если, однако, вам нужно только изменить данные struct
в C, вы можете просто вернуть указатель наэто и обрабатывать его как непрозрачный long
в Java.)