在函数定义中未正确接收通过JNI传递的参数值

时间:2013-12-06 11:15:36

标签: java java-native-interface jnienv

我遇到了问题,但似乎很有趣,我无法确定如何以及为什么。它在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

如果有人知道,请告诉我。 提前谢谢。

0 个答案:

没有答案