gpt4 book ai didi

java - 如何将jobject转换为jstring

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:58 26 4
gpt4 key购买 nike

我正在尝试获取一个字符串作为从 cpp 到 java 的函数调用的返回值。

这是我的 JNI 调用

 string GetIDJni()
{
cocos2d::JniMethodInfo methodInfo;
if (! JniHelper::getStaticMethodInfo(methodInfo, CLASS_NAME, "GetID", "()Ljava/lang/String"))
{
return "";
}

jobject retObj = methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID);
jstring retStr = (jstring)retObj;
methodInfo.env->DeleteLocalRef(methodInfo.classID);
return (JniHelper::jstring2string(retStr));
}

编译时出现错误

error: invalid conversion from '_jobject*' to '_jstring*'

谁能告诉我如何解决这个问题。

最佳答案

给你...

const char* GetIDJni() {

JniMethodInfo t;

if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "GetIDJni", "()Ljava/lang/String;")) {
jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
CCString *ret = new CCString(JniHelper::jstring2string(str).c_str());
ret->autorelease();
t.env->DeleteLocalRef(str);

return ret->m_sString.c_str();
}

return 0;
}

如果你想让它以 std::String 的形式返回

std::string GetIDJni() {
std::string ret;
JniMethodInfo t;

if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "GetIDJni", "()Ljava/lang/String;")) {
jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
ret=JniHelper::jstring2string(str);
t.env->DeleteLocalRef(str);

return ret;
}

return 0;
}

关于java - 如何将jobject转换为jstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com