我的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;