java - c JNI调用java函数

标签 java android c android-ndk

我在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/

相关文章:

c - C 和/或 Objective-C 中的组头文件

java - 为 @Timed metrics-spring 获取 2 个相同的 interceptorsAndDynamicMethodMatchers

java - 在android中使用HttpUrlConnection出现意外的状态行异常?

java - 手动回滚 Spring MVC + Hibernate

android - 无法使用 Robolectric 3 创建影子类

c - 以十六进制打印负数是否有隐含的字长?

java - 尽管实现了 Comparable,但仍找不到 Collections.sort

android - Android NDK 平台不支持 ABI [armeabi, mips]

android - 如何允许从 ionic webview 复制和粘贴?

c - 使用 Makefile 和 gcc 构建动态共享库(.so、.dylib)