0

私はこれをコンパイルしようとします:

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

JNIEXPORT jint JNICALL Java_callJNITest_displayHelloWorld
  (JNIEnv env, jclass jcls) {
    printf("Hello World!");
    return 1;
}

しかし、私は常にこれらのエラーを受け取ります: ../HelloWorldJNI.c:5:24: エラー: 'Java_callJNITest_displayHelloWorld' のタイプが競合しています ../callJNITest.h:15:24: 注: 'Java_callJNITest_displayHelloWorld' の以前の宣言はここにありました make: * [HelloWorldJNI.o] エラー 1

この場合もエラーが発生しました:

JNIEXPORT void JNICALL Java_callJNITest_displayHelloWorld
  (JNIEnv env, jclass jcls) {
    printf("Hello World!");
    return;
}

しかし

JNIEXPORT JNICALL Java_callJNITest_displayHelloWorld
  (JNIEnv env, jclass jcls) {
    printf("Hello World!");
    return;
}

正常に動作します。私の質問は、JNI で戻り値の型をどのように宣言する必要があるかということです。ありがとう!

4

1 に答える 1

1

OPの問題を解決したので、コメントから回答を作成しました。

ヘッダー ファイルには、 の最初の引数の型が a である宣言が含まれていますがJava_callJNITest_displayHelloWorldJNIEnv*cpp ファイルでは型がJNIEnvです。修正は、ヘッダー ファイルの宣言と一致envするように、cpp ファイルの型を に変更することです。JNIEnv*

于 2012-07-25T18:54:43.157 に答える