Методы JNI, модифицирующие указатели - PullRequest
0 голосов
/ 21 июня 2010

Наличие особой проблемы.Когда я вызываю следующий метод JNI.

jobjectArray array = env->NewObjectArray(list->size, jclass, 0);

Теперь list->size устанавливается равным 54. Но как только код запускается, тот же указатель возвращает, 2405015736 что происходит?Как влияет на значения, содержащиеся в остальной части структуры также.Установка статического значения, например

jobjectArray array = env->NewObjectArray(54, jclass, 0)

Также не имеет никакого эффекта.Есть идеи?Я в тупике.

(jclass - это загруженный объект класса jclass = env->FindClass("name");)

Спасибо

1 Ответ

0 голосов
/ 21 июня 2010

Ваша проблема в том, что размер может не относиться к типу jsize, поэтому необходимо выполнить преобразование. Теперь, это было бы все хорошо, но JNI - абсолютная боль от всего этого. Я думаю, что происходит то, что ваш стек искажается из числа, которое интерпретируется как слишком большое. Или что-то типа того. Просто сделайте преобразование размера так:

jint msize = list->size;
jobjectArray array = env->NewObjectArray(msize, jclass, 0);

Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...