2011-01-09 33 views
3

我有以下的原生程序:如何發佈從本機代碼發回到Java的jstring?

void sendMessage(const char* text) 
{ 
    JNIEnv* env; 

    if(!_jvm) 
     return; 

    _jvm->AttachCurrentThread(&env, NULL); 

    if(!_nativesCls) 
     _nativesCls = env->FindClass("com/foo/BaseLib"); 
    if(_nativesCls == 0) 
      return; 

    jstring message = env->NewStringUTF(text); 
    if(!_sendStr) 
     _sendStr = env->GetStaticMethodID(_nativesCls, "onMessage", "(Ljava/lang/String;)V"); 
    if(_sendStr) 
     env->CallStaticVoidMethod(_nativesCls, _sendStr, message); 
    //env->ReleaseStringUTFChars(message, text); // <----- * NOT WORKING 
} 

如果我跑這是是,它工作得很好,直到內存已滿,並且我得到:

ReferenceTable溢出(最大值= 512)

我認爲添加上面的註釋行可以解決這個問題,但它只是導致應用程序在那一刻爆炸。

有什麼建議嗎?

回答

相關問題