我遇到了问题,但似乎很有趣,我无法确定如何以及为什么。它在Linux中运行良好但在Windows OS中遇到问题
我有 JNI 功能 例如:
调用功能就像是
String str =“4a3434”;
int java_ret = Sample.A.downloadFunction(Integer.parseInt(str),0);
JNIEXPORT jint JNICALL Java_A_downloadFunction(JNIEnv *env, jobject obj, jlong lng_1, jlong lng_2)
{
uint32 a = (uint32) lng_1;
uint32 b = (uint32) lng_2;
return callCfun(a, b);
}
在callCfun(a, b)
API中,错误的值会传递给C函数中的a
。
例如:如果a = 4a3434,则在callCfun中值a = 5a3634
但是我改变了函数定义,如:
JNIEXPORT jint JNICALL Java_A_downloadFunction(JNIEnv *env, jobject obj, jlong lng_1, jlong lng_2)
{
int ret_val;
uint32 a = (uint32) lng_1;
uint32 b = (uint32) lng_2;
ret_val = callCfun(a,b);
return ret_val;
}
正确的值将传递给C函数中的a
。
如果有人知道,请告诉我。 提前谢谢。