В java объявлен метод
public native String stringFromJNI(byte[] b);
А на c++ объявлена функция
Java_theflipsiderebirth_testclintgame_1write_1in_1androidstudio_MainActivity_stringFromJNI(JNIEnv* env, object obj, jbyte b[]){...}
Однако по адресу в переменной b лежит мусор. Почему?
Потому, что объявление функции некорректно. Утилита javah генерирует такое определение
JNIEXPORT jstring JNICALL Java_MainActivity_stringFromJNI
(JNIEnv *, jobject, jbyteArray);
Обратите внимание, что jbyteArray - это не byte[], это тип ссылки на массив байт.
JNIEXPORT jstring JNICALL Java_MainActivity_stringFromJNI(JNIEnv* env, jobject obj, jbyteArray b) {
jsize size = env->GetArrayLength(b);
jbyte* buffer = env->GetByteArrayElements(NULL);
...
env->ReleaseByteArrayElements(b, buffer, JNI_ABORT);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей