2017-07-19 137 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