2012-12-26 25 views
5

私はcppからjavaへの関数呼び出しに戻る文字列を取得しようとしています。jobjectをjstringに変換する方法

これは私がエラー

error: invalid conversion from '_jobject*' to '_jstring*'

は、誰もがこの問題を解決する方法を教えてくださいすることができ得るコンパイルするには、私のJNI呼び出し

string GetIDJni() 
{ 
    cocos2d::JniMethodInfo methodInfo; 
    if (! JniHelper::getStaticMethodInfo(methodInfo, CLASS_NAME, "GetID", "()Ljava/lang/String")) 
    { 
     return ""; 
    } 

    jobject retObj = methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID); 
    jstring retStr = (jstring)retObj; 
    methodInfo.env->DeleteLocalRef(methodInfo.classID); 
    return (JniHelper::jstring2string(retStr));   
} 

です。

答えて

9

ここであなたが...

const char* GetIDJni() { 

    JniMethodInfo t; 

     if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "GetIDJni", "()Ljava/lang/String;")) { 
      jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID); 
      t.env->DeleteLocalRef(t.classID); 
      CCString *ret = new CCString(JniHelper::jstring2string(str).c_str()); 
      ret->autorelease(); 
      t.env->DeleteLocalRef(str); 

      return ret->m_sString.c_str(); 
     } 

     return 0; 
    } 

を行くと、あなたはそれが、STDとして返す取得したい場合::同じで鋳造を行うことを除いて、違ったあなたをやった後、文字列

std::string GetIDJni() { 
    std::string ret; 
JniMethodInfo t; 

    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "GetIDJni", "()Ljava/lang/String;")) { 
     jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID); 
     t.env->DeleteLocalRef(t.classID); 
     ret=JniHelper::jstring2string(str); 
     t.env->DeleteLocalRef(str); 

     return ret; 
    } 

    return 0; 
} 
+0

関数呼び出しの行? – SomethingSomething

関連する問題