在android中使用libc.so时使用jni时崩溃

时间:2016-05-19 08:50:03

标签: android android-ndk java-native-interface libc

在.so中调用本机方法'sign4Android'后,应用程序崩溃了。代码和日志如下。请帮忙!

代码:

shared_ptr<>

本机代码方法:

extern "C" JNIEXPORT jstring JNICALL Java_com_XXX_sign_SignHelper_getSign(JNIEnv *env, jobject obj, jstring input){
    const char *para = env->GetStringUTFChars(input, 0);
    std::string result_c = sign4Android(para);
    env->ReleaseStringUTFChars(input, para);
    const char *chars = result_c.c_str();
    jstring result = env->NewStringUTF(chars);
    delete chars;
    return result;
} 

使用ndk-stack记录:

string sign4Android(const char* para);

1 个答案:

答案 0 :(得分:-1)

Selvin

中提及comment
  

首先,您不应该从char http://ideone.com/xwUt2R

返回std:string.c_str()指针

为我工作