Как передать большую структуру через JNI из C в JAVA - PullRequest
2 голосов
/ 08 февраля 2011

Можно ли передать большую структуру через JNI из C в Java?

Может кто-нибудь дать мне возможные решения?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Объявите указатель на структуру в вашем Java-классе следующим образом:

protected long ptrToX;

Далее, чтобы установить его:

  • Получить идентификатор поляиспользуя (*env)->GetFieldID(...)
  • Получите указатель используя (*env)->GetLongField(...)
  • Установите указатель используя (*env)->SetLongField(...)

Чтобы получить его, просто выполните первые два упомянутых шагавыше.

Всегда не забывайте включать финализатор, который позаботится об освобождении указателя при сборке мусора.В качестве альтернативы, если вы не хотите подвергаться снижению производительности при использовании финализаторов, просто предоставьте метод terminate (), который освобождает указатель.

1 голос
/ 09 февраля 2011

Лучше переключиться на JNA, это гораздо более удобный способ программирования с C на JAVA.

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