2012-02-17 9 views
2
アンドロイド

でNDKでC++からの戻り値の型として引数と文字列として文字列を含みます次のように:は、私はJavaで1つの以下のメソッドを持ってい

jstring Java_ashok_learning_ndk_SampleNDKActivity_jniStringMethod(JNIEnv *env, 
    jobject obj) { 
    jstring jstr = env->NewStringUTF("This comes from jni string ."); 

    //jclass clazz = env->GetObjectClass(obj); 
    jclass clazz = env->FindClass("ashok/learning/ndk/SampleNDKActivity"); 
    if (0 == clazz) { 
    LOG("clazz class not found!"); 
    } 

    jmethodID messageMe = env->GetMethodID(clazz, "stringMethod", "(Ljava/lang/String;)Ljava/lang/String;"); 

    if (0 == messageMe) { 
    LOG("messageMe method not found!"); 
    } 
    jobject result = env->CallObjectMethod(obj, messageMe, jstr); 
    LOG("result: %d", result); 

    const char* str = env->GetStringUTFChars((jstring)result, NULL); // should be released but what a heck, it's a tutorial :) 
    printf("%s\n", str); 

    return env->NewStringUTF(str); 
} 

しかし、それはcalled..and i「が!見つからないmessageMe法」などのログを取得していますを取得していない、この方法は、いずれかについて提案することができます...署名と一致していないことを意味し、私の間違い?

+0

'jobject result = env-> CallObjectMethod(obj、messageMe、jstr); LOG( "結果:%d"、結果); const char * str = env-> GetStringUTFChars((jstring)result、NULL); //解放する必要がありますが、これはチュートリアルです。 printf( "%s \ n"、str); 'これらの行は私に役立ちます –

答えて

0

あなたの署名はOKです。 messageMeがNULLであっても、あなたのコードが正しく実行されないのですか? jmethodIDがNULLにもかかわらず、私のコードが正常に動作していたことが私には分かっています。

関連する問題