日期:2014-05-20  浏览次数:20651 次

用JNI技术调用java class后, 取不到返回值?

java函数: public boolean SendLog(String Access_Token, String Title, String Content);

vc调用:
mid = env->GetMethodID(cls,"<init>","()V"); 
if(mid !=0)  
{  
jobj=env->NewObject(cls,mid);  
}  
mid = env->GetMethodID( cls, "SendLog","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z");  
if(mid !=0)  
{  
  jboolean ret = env->CallBooleanMethod(jobj, mid, s1, s2, s3); 


我在SendLog()中都是return true, 没有returen false的地方.

运行结果ret为0, 这是不对的.

后来将SendLog()修改为什么都不做, 直接返回true, 这回对了, ret为1.

用JNI技术调用java class后, 取不到返回值, 怎么办?


------解决方案--------------------
JNI 是java调用dll吧。
你这好像是VC调用java class呢
------解决方案--------------------
探讨
java函数: public boolean SendLog(String Access_Token, String Title, String Content);

vc调用:
mid = env->GetMethodID(cls,"<init>","()V");
if(mid !=0)
{
jobj=env->NewObject(cls,mid);
}
mid……