Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
aggressor666
1

Способ передачи вложенной структуры JNI

23.07.2013, 11:35. Показов 1720. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создана простая демо структура. файл RECT.java

Java
1
2
3
4
5
6
 public class RECT {
    long left;
    long right;
    long top;
    long bottom;
    }
Реализуется через JNI в linux

Java
1
2
3
4
5
6
7
8
9
Файл APIMapacces.java
 
public class APIMapacces {
public APIMapacces(){
System.loadLibrary("apimapacces");
}
public native long rects(RECT rect);
 
}
Файл APIMapacces.h

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class APIMapacces */
 
#ifndef _Included_APIMapacces
#define _Included_APIMapacces
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     APIMapacces
 * Method:    rects
 * Signature: (LRECT;)J
 */
JNIEXPORT jlong JNICALL Java_APIMapacces_rects
  (JNIEnv *, jobject, jobject);
 
#ifdef __cplusplus
}
#endif
#endif
файл APIMapacces.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 #include "APIMapacces.h"
    #include <iostream.h>
    #include <stdlib.h>
    #include <dlfcn.h>
    #include <stdio.h>
    #include <istream.h>
    #include <ctime>
    #include "mapacces.h"
 
    using namespace std;
 
RECT* javaRECT;
JNIEXPORT jlong JNICALL Java_APIMapacces_rects
(JNIEnv *env, jobject, jobject rect){
 
javaRECT = new RECT();
 
jclass rectClass = env->FindClass("RECT");
 
jfieldID leftID = env->GetFieldID(rectClass, "left", "J");
jfieldID rightID = env->GetFieldID(rectClass, "right", "J");
jfieldID topID = env->GetFieldID(rectClass, "top", "J");
jfieldID bottomID = env->GetFieldID(rectClass, "bottom", "J");
 
javaRECT->left = env->GetLongField(rect, leftID);
javaRECT->right = env->GetLongField(rect, rightID);
javaRECT->top = env->GetLongField(rect, topID);
javaRECT->bottom = env->GetLongField(rect, bottomID);
return 0;
}
И основной файл для проверки Application.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Application{
    public static void main(String[] args){
    System.out.println("start");
 
APIMapacces _native = new APIMapacces();
long i;
RECT myRect = new RECT();
myRect.left = 5;
myRect.right = 10;
myRect.top = 15;
myRect.bottom = 20;
_native.rects(myRect);
i = myRect.left + myRect.right;
System.out.println(i);
 
}
}
Как передавать вложенную структуру, если например в файле RECT.java задать параметр bottom как структура с двумя значениями типа long?Например BOTTOM Bottom; файл BOTTOM.java

Java
1
2
3
4
public class BOTTOM{
long x;
long y;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.07.2013, 11:35
Ответы с готовыми решениями:

Инициализация вложенной структуры
Здравствуйте! Имеется структура, хранящая 2 вложенные структуры: typedef struct{ struct str1{...

Передача вложенной структуры в функцию
Добрый вечер!интересует вопрос,есть Массив структур,который содержит в себе еще несколько массивов...

Final для вложенной структуры
class A{ class B {..} final; }; так класс B теперь входит в размер A, но не инициализируется....

изменить поле вложенной в структуру структуры
Есть структура дерева struct tree {//=====================================структура (узла) ДЕРЕВА...

1
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.07.2013, 14:05 2
https://www.cyberforum.ru/blog... g1384.html
0
23.07.2013, 14:05
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2013, 14:05
Помогаю со студенческими работами здесь

Присвоение значений элементам вложенной структуры
Необходимо присвоить значение элементам массива структур struct message { unsigned char code;...

Заполнить массив указателей вложенной структуры
Есть две структуры для двоичного дерева поиска typedef struct _price { double price; char*...

Друзья шаблонного класса. Использование вложенной в класс структуры
Всем привет! Изучаю книгу &quot;Прата С. - Язык программирования С++. Лекции и упражнения&quot;. Разобрал...

Прочитать данные из многоуровневой вложенной структуры файлов с разными разделителями
Подскажите пожалуйста с чего начать, установил python 2.7, скачал sqlite3, задача такая: есть папка...

Присвоить значению kind одно из значений вложенной структуры type_hero
Мне необходимо присвоить значению kind одно из значений вложенной структуры type_hero (это...

структура в структуре: есть ли доступ к объектам вложенной структуры из объекта первой?
Доброго времени суток! Есть структура в структуре: struct Time struct Time


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Распознавание изображений (компьютерное зрение) на C++
InfoMaster 20.01.2025
Введение в компьютерное зрение и основы работы с изображениями Компьютерное зрение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, позволяющую. . .
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru