这是我在 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!
最佳答案
您忘记了每个 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”。
关于android - Jfloat 到 Float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308166/