Я только что начал работать с NDK Android, но я продолжаю получать SIGSEGV, когда у меня есть этот вызов в моем коде C:
jobjectArray someStringArray;
someStringArray = (*env)->NewObjectArray(env, 10,
(*env)->FindClass(env,"java/lang/String"),(*env)->NewStringUTF(env, ""));
Основа на всем примере, который я могу найти, вышеупомянутый код, корректна, но я продолжаю получать SIGSERGV, и все в порядке, если строка NewObjectArray комментируется. Какая-либо идея, что могло вызвать такую проблему?
выглядит правильно, так что я предполагаю, что вы сделали что-то еще не так. я предполагаю, что вы работаете с checkjni? вы можете захотеть разбить это на несколько строк: сделать FindClass и проверить возвращаемое значение, сделать NewStringUTF и проверить возвращаемое значение, а затем позвонить в NewObjectArray.
btw, вы можете захотеть передать NULL в качестве последнего аргумента; этот паттерн использования пустой строки в качестве значения по умолчанию для каждого элемента массива обычно используется (я думаю, что это copy & pasted из некоторой документации Sun и распространился оттуда), но это редко бывает полезно, и это немного расточительно. (и это не соответствует поведению "new String[10]" на Java.)
.