【发布时间】:2011-11-24 02:04:07
【问题描述】:
我正在使用 JNI 在 C++ 和 Java 之间传递数据。我需要传递一个“长”类型,并且正在使用类似的东西:
long myLongVal = 100;
jlong val = (jlong)myLongVal;
CallStaticVoidMethod(myClass, "(J)V", (jvalue*)val);
然而,在 Java 中,当检索 'long' 参数时,它会被检索为一个非常大的负数。我究竟做错了什么?
【问题讨论】:
-
奇怪的是,当我通过 JNI 将值“1”传递给 Java 时,它一直得到 4294967297。这个数就是费马数。这似乎是一个非常巧合的值。如果有人对为什么看到这个特定值有任何想法,我很想听听。回到主题,将我的 long as
(jlong) value转换为允许 Java/JNI 将其解析为正确的值 1。 -
4294967297 是 (1
标签: java android c++ java-native-interface android-ndk