2014-02-27 106 views
0

everyone。我正在使用JNI在Android下编写代码。 我需要将一个“间隔”作为uint16传递给我的C foo(),但之后我使用相同的“间隔”返回Java。将uint16转换为jint并返回JNI

C:

我有以下

error: operands to ?: have different types 'jint {aka int}' and 'uint16* {aka short unsigned int*}'

错误如何使用 '间隔' 的说法,以避免错误并继续程序的正确工作?

+1

这是你实际拥有的代码吗?错误信息不匹配:它表示操作数是一个int和一个* uint16指针*。 – Joni

+0

你在写错误后,我删除了指针并忘记了它。对不起。 – user3360601

回答

1

根据代码,您需要添加一个转换以确保?:运算符的两个条件都是相同的类型。

static jint func (JNIEnv* env, jobject object,jstring first) 
{ 
    /*...action...*/ 
    uint16 interval; 
    jint result = foo (ifirst, &interval); 
    return result < 0 ? result : (jint)interval; 
} 
+0

感谢您的回复,但是这个错误突然消失了。 – user3360601