这是我在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之间进行某种转换?
TIA!
答案 0 :(得分:3)
您忘记了每个JNI函数都有的隐式jobject / jclass参数:
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'。
答案 1 :(得分:0)
无需任何特殊转换。
检查您的C ++日志记录是否按预期执行。一种方法是在C ++函数中为x,y和tapcount分配已知值,并确保按预期记录它们。