我尝试传递1000,1000000(java)和(long long)c ++,它运行正常。但我试图通过这个号码549755813888,在jni这个数字显示为零。我不知道如何将它传递给原生部分。
JNIEXPORT jlong JNICALL myMethod(JNIEnv *env, jclass type,jlong mynum) {
__android_log_print(ANDROID_LOG_VERBOSE, "SDK", "mynum %d", mynum);
//Shows zero
return 0;
}
答案 0 :(得分:0)
你的问题在细节上非常吝啬。但是因为549755813888是0x1000000000,所以看起来你正在调用一个使用jint而不是jlong的方法,或者沿着将long long截断为int的某个地方调用方法。你的代码应该是这样的:
jlong jLongValue = 549755813888LL;
env->CallObjectMethodV(obj, methodData->mid, jLongValue);
并确保被调用的方法实际上需要很长而不是int?