У меня есть встроенная функция, к которой я обращаюсь через JNI, которая должна возвращать содержимое массива в java.Мой прототип функции выглядит следующим образом:
JNIEXPORT jcharArray JNICALL Java_jniusb_Main_receiveData
(JNIEnv *, jclass, jchar);
, который был сгенерирован с помощью javah.exe.
Так что в коде функции у меня есть массив 'unsigned char InputPacketBuffer [65]', который я хочувернуться в Яву.Однако у меня возникли проблемы с отображением этого типа возвращаемого значения 'jcharArray'.
В другой функции я использовал метод 'GetCharArrayRegion', предоставленный JNI, чтобы преобразовать входной параметр типа 'jcharArray' в массив 'jchar', который я мог затем преобразовать в массив 'unsigned char'.По сути, мне нужно сделать обратное для преобразования в другом направлении, но я не смог найти подходящий метод JNI в pdf спецификации JNI.Кто-нибудь знает, как это сделать?
ОБНОВЛЕНИЕ:
Я нашел правильную функцию JNI по ссылке Энди - SetCharArrayRegion ().
fyi - "Java Native Interface - руководство и спецификация для программиста" дает неверные примеры использования их функций.
, т.е.
(*env)->SetCharArrayRegion(env, elemArr, 0, len, chars);
не компилируется.Вместо этого правильный синтаксис:
(*env).SetCharArrayRegion(elemArr, 0, len, chars);