0

ネイティブ コードから Java メソッドを呼び出そうとしていますが、失敗します。const 文字列を使用してメソッドを呼び出すことはできません (つまり、パラメーターとして「string」を使用することも、次の方法を使用することもできません。メソッドから char[] パラメーターを削除し、int パラメーターのみを使用してネイティブから呼び出すと、動作します。したがって、問題は char[] パラメータです。

私は Java クラス Stats を持っています:

public class Stats {

    HashMap<String, Integer> mStats;

    public Stats() {
        mStats = new HashMap<String, Integer>();
    }

    public void put(char[] key, int value) {
        mStats.put(new String(key), value);
    }

}

そしてネイティブ関数

void Java_com_..._testObject(JNIEnv* env, jobject javaThis,
        jobject jStatsObj) {
    jclass jstatistics_class = env->GetObjectClass(jStatsObj);
    jmethodID jput_method = env->GetMethodID(jstatistics_class, "put", "(C[I)V");
    char s[]={"hello"};
    env->CallIntMethod(jStatsObj, jput_method, s, 3);
}
4

1 に答える 1

1

メソッドのシグネチャが間違っています。

(C[I)V意味void method(char, int[])

が必要([CI)Vです。

出典:このページ.

于 2012-11-26T12:38:37.010 に答える