Как мне вернуть структуру, определенную и заполненную на C / C ++, в java через JNI в android? - PullRequest
0 голосов
/ 07 мая 2020

Ниже упоминается функция, определенная в C, которую я буду вызывать из java, например, Getdevicedetails(string):

extern "C" JNIEXPORT jobject JNICALL Java_com_example_myapplicationforc_MainActivity_getdevicedetails(JNIEnv* env, jobject value,jstring stringfromjava)

Структура, созданная на стороне C :

struct deviceinfo
    {
        char manufacturer[PROP_VALUE_MAX + 1];
        char model[PROP_VALUE_MAX + 1];
        char brand[PROP_VALUE_MAX + 1];
        char SDK[PROP_VALUE_MAX + 1];
        char buildrelease[PROP_VALUE_MAX + 1];
        //char serialno[PROP_VALUE_MAX + 1];
        char imeino[PROP_VALUE_MAX + 1];
    };

struct deviceinfo *devicedetail = (struct deviceinfo *) malloc(sizeof(deviceinfo));

После заполнения этой структуры при возврате я конвертирую это в объект java и возвращаю его вот так

return env->NewGlobalRef(jobject (devicedetail)); 

На javaside я получаю объект вот так:

Object jobjt = getdevicedetails(paramstring);

Но вылетает при запуске приложения. Любая подсказка, где я ошибаюсь? когда я передаю каждый член структуры в виде строки от C до java, он работает и отображается в приложении java / android. Но при возврате ссылки на объект происходит сбой. Нужна помощь.

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