【发布时间】:2026-01-12 13:05:01
【问题描述】:
我有一个返回字符串的 Java 实例方法,我通过 C++ 中的 JNI 调用此方法。我写了以下代码:
const char *DiagLayerContainer_getDESC(JNIEnv *env, jobject diagLayer) {
jclass diagLayerClass = env->FindClass(PARSER_CLASS);
jmethodID getDESCDiagLayerMethodID = env->GetMethodID(diagLayerClass, "getDESCDiagLayer", "(Ljava/lang/Object;)Ljava/lang/String;");
jstring returnString = (jstring) env->CallObjectMethod(diagLayer, getDESCDiagLayerMethodID);
return env->GetStringUTFChars(returnString, JNI_FALSE);
}
如何获取字符串并将其转换为 const char *?
我的程序在最后一行崩溃,访问冲突到 0x00000000。 returnString 不为 NULL。
【问题讨论】:
-
在调试器中运行您的代码,并在崩溃点检查进程的状态。
-
这里崩溃了 (jni.h): const char* GetStringUTFChars(jstring str, jboolean *isCopy) { return functions->GetStringUTFChars(this,str,isCopy); } 没有机会深入了解调试器
标签: java c++ string java-native-interface