-2

JavaコードからJNIを介して既存のC関数を呼び出す必要があります。JNIが提案したように、Javaツールを使用してネイティブC関数のヘッダーファイルを作成し、それをCファイルにインクルードしました。

(ヘッダーファイルで生成された)既存のC関数の関数プロトタイプを変更する必要がありますか?

サンプルコードに間違いがある場合は訂正してください

サンプルコード:

         #include <stdio.h>
         #include <jni.h>
         #include "myHeader.h"
         int main(){
int result=Nativecall();
return 0;
 }
int NativeCall(){  //Native Method implementation
int sample=10;
return sample;
 }
  _______________
   myHeader.h

   JNIEXPORT jint JNICALL Java_test__NativeCall
     (JNIEnv *, jobject);
4

1 に答える 1

0

いいえ、何もする必要はありません。javahが自動的に機能し、ヘッダーファイルをCファイルにインクルードし、ヘッダーファイル内で定義された関数を実装するだけです。したがって、状況に応じて、次のようになります。javahがヘッダーファイルで定義したものと同じプロトタイプを使用していることがわかります。

JNIEXPORT jint JNICALL
    Java_test__NativeCall
                    (JNIEnv *env, 
                    jobject callingObject)
    {
    int sample=10;
    return (jint)sample;
    }
于 2013-01-05T19:48:16.863 に答える