JNI: передача нескольких параметров в сигнатуре функции для GetMethodID - PullRequest
22 голосов
/ 29 октября 2011

Я пытаюсь выполнить функцию в Java (из C), которая имеет следующую подпись:

public void execute(int x, int y, int action);

Моя проблема заключается в определении сигнатуры функции в GetMethodID:

env->GetMethodID(hostClass, "execute", "(I;I;I;)V");

Проблема, которую я получаю:

W/dalvikvm( 1849): Bogus method descriptor: (I;I;I;)V
W/dalvikvm( 1849): Bogus method descriptor: (I;I;I;)V
D/dalvikvm( 1849): GetMethodID: method not found: Lcom/device/client/HostConnection;.execute:(I;I;I;)V

Я не уверен, как указать сигнатуру метода в GetMethodID (для 3 целых чисел в качестве параметров). Я видел, как люди используют ";" для разделения параметров в других сообщениях для класса String и File, но ничего с такими примитивами, как целое число.

Как правильно это сделать, пожалуйста?

Спасибо.

1 Ответ

54 голосов
/ 29 октября 2011

Согласно этому файлу вы должны использовать (III)V подпись.Только когда вам необходимо указать полностью определенный класс, вы должны использовать ';', например Ljava/lang/String;.

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