2014-02-27 16 views
0

모두로 변환하십시오. JNI를 사용하여 Android에서 작성 중입니다. "간격"을 uint16으로 C foo()에 전달해야하지만 그 후에 Java로 돌아가서 동일한 "간격"을 사용합니다.uint16을 jint 및 JNI

C :

I

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

다음 오류가 어떻게 오류를 방지하고 프로그램의 올바른 작업을 계속하기 위해 '간격'인수를 사용할 수 있나요?

+1

이 코드는 실제로 가지고 있습니까? 오류 메시지가 일치하지 않습니다. 피연산자가 'uint16'에 대한 int 및 * 포인터 *라고합니다. – 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