我在c jni中的第一个函数代码是
void fun1()
{
jmethodID java_fun = (*global_env)->GetMethodID(global_env,cls_Env, "test1", "()V");
(*global_env)->CallVoidMethod(global_env,(*global_obj), java_fun);
}
我的第二个是
void fun2(int x)
{
jmethodID java_fun = (*global_env)->GetMethodID(global_env,cls_Env, "test2", "([I)V");
(*global_env)->CallVoidMethod(global_env,(*global_obj), java_fun,(int)x);
}
在我的 java 端,第一个 c 函数的代码是
private void test1()
{
System.out.printf("test1");
callfunction();
}
void callfunction()
{
System.out.printf("how i can get here??");
}
第一个问题是如何从 C 调用中获取 callfunction()?
现在第二个c函数的第二个java代码是
public int var1;
private void test2(int x)
{
System.out.printf("test2");
var1=x;
}
第二个问题是如何将c端的数据保存到java端?
谢谢
最佳答案
fun2()
中有一个拼写错误:它应该是 GetMethodID(global_env, cls_Env, "test2", "(I)V");
(< strong>[ 是错误的)。
如果你想直接从 C 调用 callfunction()
,使用
GetMethodID(global_env, cls_Env, "callfunction", "()V");
关于java - c JNI调用java函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593454/