2017-07-19 20 views
0

Javaコード用のC実装を作成しています。これは単純なHelloWorldコードです。JNI:Javaからの呼び出しの呼び出し

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

は方法JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj)に呼び出されるJavaコードを宣言されていない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

関連する問題