JNI:从java调用C

JNI:从java调用C,c,java-native-interface,C,Java Native Interface,我正在为Java代码编写一个C实现,它是一个简单的HelloWorld代码 #include <jni.h> #include <stdio.h> #include "HelloJNI.h" // Implementation of native method sayHello() of HelloJNI class JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj) {

我正在为Java代码编写一个C实现,它是一个简单的HelloWorld代码

#include <jni.h>
#include <stdio.h>
#include "HelloJNI.h"

// Implementation of native method sayHello() of HelloJNI class
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj) {
   printf("Hello World!\n");
   return;
}

有没有办法调用int-callmethodJNIENV*env,jint a,jint b,而这不是在方法JNIEXPORT void JNICALL java_HelloJNI_sayHelloJNIEnv*env,jobject thisObj中声明要调用的java代码?

用C编写的本机方法可以做任何其他C程序可以做的事情,包括调用其他函数:

JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj) {
   jint a=3, b=4;
   printf("sum=%d\n", callmethod(env, a, b));
   return;
}

@这是一个警告,不是一个错误。您应该为callmethod提供一个声明。
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj) {
   jint a=3, b=4;
   printf("sum=%d\n", callmethod(env, a, b));
   return;
}