Плавать на плаву - PullRequest
       10

Плавать на плаву

1 голос
/ 10 июня 2011

Вот мое определение функции в Java:

public static native void ToucheBegan( float x, float y, int tapcount );

А вот мое определение в CPP

JNIEXPORT void JNICALL Java_com_android_templateApp_GL2View_ToucheBegan( JNIEnv *env, jfloat x, jfloat y, jint tap_count );

Когда я регистрируюсь:

Из Java я отправляю:

125.278595 496.842102 1

И в C ++ я получаю:

3.274879 125.278595 1140353994

Должны ли быть какие-то преобразования между jfloat для float или jint в int?

ТИА!

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Вы забыли неявный аргумент jobject / jclass, который есть у каждой функции JNI:

void JNICALL Java_com_android_templateApp_GL2View_ToucheBegan( JNIEnv *env, jobject thiz, jfloat x, jfloat y, jint tap_count );

Итак, вы интерпретировали 'thiz' как 'x', 'x' как 'y' и 'y' как 'tap_count.

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

Никаких специальных преобразований не требуется.

Убедитесь, что ваш журнал C ++ работает так, как ожидалось.Один из способов сделать это - назначить известные значения x, y и tapcount в функции C ++ и убедиться, что они регистрируются, как и ожидалось.

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