передача нескольких строк из c в java (jni) в функции - PullRequest
1 голос
/ 13 июня 2011

В JNI, когда мы хотим передать строку из C в Java, мы делаем это с помощью (C ++):

return env->NewStringUTF("MY String");

Поскольку это оператор возврата, его можно вызвать только один раз, т.е.Только одна строка может быть передана из C в Java.

Как насчет функции, в которой мы хотим передать несколько строк из C в Java?!

Например, рассмотрим случай, когда функцияхочет передать несколько строк:

void num()
{
    for(int i=0;i<10;i++)
    {
        pass i from C to java..
    }
}

Как я могу это сделать?

Примечание: я знаю, что это может быть достигнуто с помощью массива строк или путем конкатенации i и, наконец, возврата строки. Кроме того, я знаю, что я целое число, и я знаю, как преобразовать целое число в строку в c ++.

Считайте, что это необходимо для передачи i, поскольку цикл выполняется, хотя i (который передается).

Будет хорошо, если функция останется недействительной.

1 Ответ

0 голосов
/ 13 июня 2011

Это может быть достигнуто путем
a) вызова java-методов (обратных вызовов) в цикле for (которые, по сути, являются установщиками для требуемого массива).
b) передачей массива jbyte (int) в качестве аргумента и заполнениемон в цикле.
c) метод, о котором вы упоминали в вопросе - упаковка возвращаемого объекта (в байтовом массиве) и его возврат;распакуйте это в стороне java.Опция

, которая вас не интересует, является наилучшим подходом и принятым общим подходом.
Основной упор в коде JNI заключается в сокращении вызовов через Java-C (и наоборот).Попробуйте изменить свои настройки, если вы пишете нетривиальный код

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