我试图从我的本机代码调用Java方法,但它失败了。我不能用 const 字符串(即"字符串"作为参数)调用该方法,也不能通过以下方式调用该方法。如果我从方法中删除 char[] 参数并仅使用 int 参数从本机调用它,它就可以工作。所以问题是 char[] 参数。
我有Java类统计:
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);
}
方法签名错误。
(C[I)V
意味着void method(char, int[])
你需要([CI)V
.
来源:此页面。