JNI通过引用传递,可能吗? 我有一个java程序,它调用C++程序来验证用户。我希望程序返回true或false,如果返回false,则更新指向错误消息变量的指针,然后可以从Java程序中获取该变量
另一种解释: 本机方法的外观如下所示:JNI通过引用传递,可能吗? 我有一个java程序,它调用C++程序来验证用户。我希望程序返回true或false,如果返回false,则更新指向错误消息变量的指针,然后可以从Java程序中获取该变量,java,c++,java-native-interface,pass-by-reference,Java,C++,Java Native Interface,Pass By Reference,另一种解释: 本机方法的外观如下所示: public native String takeInfo(String nt_域、String nt_id、String nt_idca、String nt_密码、String&error) 我在这里称之为这种方法: boolean canLogin=takeInfo(域、用户ID、”、用户密码、字符串和错误) 然后,在C++程序中,我检查用户是否被验证并将其存储在布尔函数中,如果是false,则获取错误消息并用它更新和出错。然后将该布尔值返回到我的Ja
public native String takeInfo(String nt_域、String nt_id、String nt_idca、String nt_密码、String&error)代码>
我在这里称之为这种方法:
boolean canLogin=takeInfo(域、用户ID、”、用户密码、字符串和错误)
然后,在C++程序中,我检查用户是否被验证并将其存储在布尔函数中,如果是false,则获取错误消息并用它更新和出错。然后将该布尔值返回到我的Java程序,在那里我可以显示错误或让用户通过
有什么想法吗
最初我有它,因此程序将返回“true”或错误消息,作为jstring,但我的老板希望它如上所述。如果您的场景像您描述的那样简单,为什么不直接为“true”返回NULL(尽管这通常与您可能期望的相反)如果出现问题,返回一个指向错误结构的指针?有一种常用技术,通过使用对象数组in parameter来模拟额外的out参数
比如说
public native String takeInfo(String nt_domain, String nt_id, String nt_idca, String nt_password, String[] error);
boolean canLogin = takeInfo(domain, userID, "", userPass, error);
if(!canLogin){
String message = error[0];
}
还有一种方法是返回结果对象
class static TakeInfoResult{
boolean canLogon;
String error;
}
TakeInfoResult object = takeInfo(domain, userID, "", userPass);
在第二种情况下,您需要在JNI层中编写更多程序。谢谢,我需要在本机(C++)代码中做什么来更新带有错误消息的“error”呢?准备字符串对象,并将其分配到数组中