2017-07-19 104 views
0

我正在为Java代码编写一个C实现,它是一个简单的HelloWorld代码。JNI:从java调用C

#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; 
} 

但我想调用这个函数的另一个函数调用callmethod:

int callmethod(JNIENV *env, jint a, jint b) 
{ 
    return a+b; 
} 

有什么方法来调用未声明的java代码的方法JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj)被称为int callmethod(JNIENV *env, jint a, jint b)

回答

1

你用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; 
} 
+0

@npatel这是一个警告,而不是错误。你应该提供'callmethod()'的声明。 – EJP