2017-03-11 7 views
0
내가 jbyte 작업을 시도

에 jbyte의 값을 설정하지만 오류를 얻을 :어떻게 배열

여기
Error:(12, 19) error: no viable overloaded '='. 

내 코드입니다 :

jint len = env->GetArrayLength(s); 
jbyteArray result = (env)->NewByteArray(len); 
jbyte *element = env->GetByteArrayElements(s,false); 
for (int i=0; i < len; i++) { 
    if(env->ExceptionOccurred()) { 
     break; 
     } 
    result[i] = *(element+i); 
    } 

이 문제점은 무엇입니까?

답변

1

이와 같이 jbyteArray에 쓸 수 없습니다. 기본 배열에 대한 포인터를 가져 오려면 GetByteArrayElements을 사용해야합니다. 그리고 그 배열로 작업을 마치면 ReleaseByteArrayElements을 사용하십시오.

jbyte *result_bytes = env->GetByteArrayElements(result, NULL); 
.... 
result_bytes[i] = *(element+i); 
... 
// 0 = copy back the modified data if necessary 
env->ReleaseByteArrayElements(result, result_bytes, 0); 

는 그런데


http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html를 참조하십시오 : GetByteArrayElements에 2 번째의 인수가 너무 GetByteArrayElements(s,false)GetByteArrayElements(s, NULL)을해야하는 jboolean*입니다.
element을 사용하면 ReleaseByteArrayElements으로 전화해야합니다.

+0

고마워요,하지만 NULL을 사용할 수 없습니다 (선언되지 않았습니다) –

+1

그런 다음 필요한 헤더 (아마도'cstddef')를 포함 시키십시오. – Michael