我一直在研究如何从C++到Java的JNI调用,到目前为止我没有任何问题,我设法调用几乎任何类型的函数。
我说ALMOST,因为现在我正面临这种情况:
在Java中,我有这个功能:
public static Object getJObject(int id){
Object st = null;
switch (id){
case 0: st = "hello"; break;
case 1: st = "bye"; break;
case 2: st = 1; break;
case 3: st = 2; break;
case 4: st = 3; break;
}
return st;
}正如你所看到的,这个函数返回一个不同类型的值,并将收到的ID作为参数。
尝试从C++获取该对象时出现问题。以下是进行JNI调用的函数:
bool check(){
JniMethodInfo methodInfo;
jobject jobj;
bool b = getStaticMethodInfo(methodInfo, "org.example.act.activity", "getJObject", "()Ljava/lang/Object;");
if (!b){
CCLog("getJObject method not found");
return false;
}else{
jobj = methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID, 0);
return true;
}
}NOTE: (Although I think it is obvious) note that the
getStaticMethodInfo method sets the whole process of identifying a method in a Java class. It works with every other function that I
call, except for this one.
这是我唯一想做的事情......我非常确定这是关于指定方法类型的签名,但也许我错了。
到目前为止,我已经找到了关于获取类对象或字符串的回答问题,但是我没有在适当的Java对象上找到任何东西......