使用char []参数通过JNI调用方法

时间:2012-11-26 12:33:48

标签: java c++ java-native-interface

我正在尝试从我的本机代码调用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);
}

1 个答案:

答案 0 :(得分:1)

您的方法签名错误。

(C[I)V表示void method(char, int[])

您需要([CI)V

来源:this page