我的cpp代码包含一个希望转换为const char *的jni函数。这是我正在使用的代码

extern "C" {
void Java_com_sek_test_JNITest_printSomething(JNIEnv * env, jclass cl, jstring str) {

    const char* mystring = env->GetStringUTFChars(env, str, 0);
    PingoScreen::notify();
}

我得到一个错误
no matching function for call to '_JNIEnv::GetStringUTFChars(JNIEnv*&, _jstring*&, int)

我究竟做错了什么 ?

最佳答案

根据文档,

GetStringUTFChars
const jbyte * GetStringUTFChars(JNIEnv * env,jstring字符串,
jboolean * isCopy);

返回一个指针,该指针指向一个字节数组,该字节数组表示采用修改的UTF-8编码的字符串。该数组在ReleaseStringUTFChars()释放之前一直有效。

如果isCopy不为NULL,则如果创建副本,则* isCopy设置为JNI_TRUE;否则,将* isCopy设置为JNI_TRUE。否则,如果没有副本,则将其设置为JNI_FALSE。

所以最后一个参数应该是一个jboolean;

10-08 17:25