2012-07-24 3 views
1

다음 코드 단편은 오류가 발생합니다 .... logcat이 첨부되었습니다. teh java 코드에서 이미지 경로를 전달하려고합니다. NDK 코드와 나는 .... FreeImage 라이브러리를 사용하여 비트 맵을 열려고하고 거기에서내 프로젝트에서 freeimage 라이브러리를 사용하려고합니다. 오류가 발생합니다.

JNIEXPORT void JNICALL Java_com_example_ImageActivity_brightness(JNIEnv* env, jobject obj, jstring bitmappath, jfloat brightnessValue) 
{ 
    AndroidBitmapInfo info; 

    int ret; 
    void* pixels; 

    if (!bitmappath) LString(); 

     const jsize len  = env->GetStringUTFLength(bitmappath); 
     const char* strChars = env->GetStringUTFChars(bitmappath, (jboolean *)0); 

     std::string Result(strChars, len); 

     env->ReleaseStringUTFChars(bitmappath, strChars); 

    FIBITMAP *bitmap = FreeImage_Load(FIF_BMP,Result.c_str(), BMP_DEFAULT); 
    if (bitmap) { 
    // bitmap successfully loaded! 
     FreeImage_Unload(bitmap); 
    } 

당신이 JNI 함수를 호출하는 방법은 당신이 같은 코드를 컴파일하는 경우에만 가능합니다

[email protected]:~/Desktop/android-imagefilter-ndk$ /home/flock/ANDROID/android-ndk-r8/ndk-build 
Compile thumb : imageprocessing <= imageprocessing.c 
jni/imageprocessing.c: In function 'Java_com_example_ImageActivity_brightness': 
jni/imageprocessing.c:77: error: request for member 'GetStringUTFLength' in something not a structure or union 
jni/imageprocessing.c:78: error: request for member 'GetStringUTFChars' in something not a structure or union 
jni/imageprocessing.c:80: error: expected expression before ':' token 
jni/imageprocessing.c:82: error: request for member 'ReleaseStringUTFChars' in something not a structure or union 
jni/imageprocessing.c:84: error: 'FIBITMAP' undeclared (first use in this function) 
jni/imageprocessing.c:84: error: (Each undeclared identifier is reported only once 
jni/imageprocessing.c:84: error: for each function it appears in.) 
jni/imageprocessing.c:84: error: 'bitmap' undeclared (first use in this function) 
jni/imageprocessing.c:84: error: 'FIF_BMP' undeclared (first use in this function) 
jni/imageprocessing.c:84: error: 'Result' undeclared (first use in this function) 
jni/imageprocessing.c:84: error: 'BMP_DEFAULT' undeclared (first use in this function) 
make: *** [obj/local/armeabi/objs/imageprocessing/imageprocessing.o] Error 1 

답변

2

오류 로그 C++ 코드.

당신이 필요로 또는 C가 다음 JNI는 다음과 같은 방법으로 호출을 작성해야합니다으로 코드를 컴파일하려면 다음

const jsize len  = (*env)->GetStringUTFLength(env, bitmappath); 
const char* strChars = (*env)->GetStringUTFChars(env, bitmappath, (jboolean *)0); 
+0

덕분에 ... 그것은 완벽하게 작동 ... :) –

+0

어떻게 다른 오류에 대한을 ??? C 코드에서 std :: string을 선언하는 것을 의미합니까? –

+1

std :: string은 C 코드에서 사용할 수 없습니다. 그것은 C++ 클래스입니다. –