마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

NDK C를 CPP로 변환하려고 하는데 에러가 나오네요.

0 추천
JNIEXPORT jbyteArray JNICALL Java_com_example_ndkimage_Dib_gray(JNIEnv *env, 
jobject obj,           
jbyteArray buf_src,    
jint cx,              
jint cy)          
{
 
 
jsize n = env->GetArrayLength(buf_src); /
 
///////////////////////////////////////
double R = 0.299;
double G = 0.587;
double B = 0.114;
 
int nTmp = 0;
int nCnt = 0;
 
// Image Processing
for (i=0; i<cy; i++) {
for (j=0; j<cx; j++) {
nTmp = (int) (pbyte[nCnt] * R // R
   + pbyte[nCnt + 1] * G // G
+ pbyte[nCnt + 2] * B); // B
 
pbyte[nCnt] = pbyte[nCnt + 1] = pbyte[nCnt + 2] = nTmp;
nCnt += 3;
}
}
 
jbyteArray result; // output할 배열
result = env>NewByteArray( n); // 사이즈만큼 새로운 배열 생성
 
/*혹은 다음과 같이 한꺼번에 배열원소를 초기화할 수 있다 */
env->SetByteArrayRegion(result, 0, n, pbyte); // 입력받은 값을 사이즈만큼 result에 입력
env->ReleaseByteArrayElements( buf_src, pbyte, 0); // buf_src 포인터 free
 
return result;
}
 
 
제가 만든 소스코드인데, 버퍼가 들어와서 버퍼가 나가는 것까지는 괜찮은데, 문제는 C에 있는파일은 C++ 로 수정하면 에러가 납니다. C는 문제가 없는데 unsigned char 를  jbyte 로바꿀수없다는 말만 들립니다. 이것 어떻게 해결해야할까요?
롤케이크 (160 포인트) 님이 2015년 6월 16일 질문

2개의 답변

0 추천
수정합니다.

제가 문제를 잘못 인식한듯 하내요.

정확하게 어디쯤에서 에러가나는지요?

캐스트 연산은 해보셨는지요?

일반적으로 c++에서 하기쉬운 에러중 하나는  캐스트입니다.

c에서는 지정하지 않아도 문제 없었던 cast가 에러를 유발합니다.

 

-----------------------------------------------------------------------

jin 인터페이싱 들은 모두 C형식이어야 합니다.

즉 JNIEXPORT 이라고 선언 하실함수는 C++인경우는

extern "C" 하셨는지요?
컴러기 (22,230 포인트) 님이 2015년 6월 16일 답변
컴러기님이 2015년 6월 16일 수정
0 추천
컴파일러 옵션에서 워닝을 오류로 처리하는건 아닌지도 확인해보세요.
익명사용자 님이 2015년 6월 17일 답변
...