我在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;
}
第二个问题是如何在java端从c侧保存我的数据?
由于
答案 0 :(得分:1)
fun2()
中有一个拼写错误:它应该显示为GetMethodID(global_env, cls_Env, "test2", "(I)V");
( [错误)。
如果您想直接从C拨打callfunction()
,请使用
GetMethodID(global_env, cls_Env, "callfunction", "()V");
答案 1 :(得分:0)
Q1:
void fun1()
{
jmethodID java_fun = (*global_env)->GetMethodID(global_env, cls_Env, "test1", "()V");
(*global_env)->CallVoidMethod(global_env, global_obj, java_fun);
}
Q2:
void test2(int x)
{
System.out.printf("test2");
var1=x;
}
void fun2()
{
int i = 2;
jmethodID java_fun = (*global_env)->GetMethodID(global_env, cls, "test2", "(I)V");
(*global_env)->CallVoidMethod(global_env, global_obj, java_fun, i);
}
请检查此link