0
我想從我的本機代碼調用Java方法,但它失敗。我不能用const字符串調用方法(即「string」作爲參數,也不按以下方式調用 如果我從方法中刪除char []參數,並且僅使用int參數從本地調用它,它就可以工作。問題是的char []參數通過JNI與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);
}
你有例外嗎?任何可能的暗示,問題可能是什麼?代碼運行時你會遇到藍屏死機嗎?我確信這對任何有JNI經驗的人來說都是一個快速解決方案,您可能會收到答案,但您應該儘可能簡化問題,以便爲我們其他人解答。 –
C char與Java char不同,另外C數組也與Java數組不同。您需要做大量轉換工作才能從C char數組創建Java char數組。 – Dunes