如何通过JNI通过64个长整数



我试图将1000、1000000的长度(java)和(长)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;

}

您的问题在细节上很简单。但是,由于549755813888为0x1000000000,它肯定看起来好像是在使用jint而不是jlong或沿线的某个地方调用方法,或者沿线截断了长时间的long to int to int。您的代码应该是:

jlong jLongValue = 549755813888LL;
env->CallObjectMethodV(obj, methodData->mid, jLongValue);

并确保被调用的方法实际上需要长时间不int?

最新更新