Pet*_*y B 3 c++ java java-native-interface pass-by-reference
我有一个Java程序,它调用C++程序来验证用户.我希望程序返回true或false,如果为false,则更新指向错误消息变量的指针,然后我可以从Java程序中获取该指针.
另一个探索:
本机方法看起来像这样:
public native String takeInfo(String nt_domain, String nt_id, String nt_idca, String nt_password, String &error);
我会在这里称之为方法:
boolean canLogin = takeInfo(domain, userID, "", userPass, String &error)
然后在我的C++程序中,我将检查用户是否经过身份验证并将其存储在布尔值中,如果为false,则获取错误消息并使用它进行更新和错误.然后将该布尔值返回到我的Java程序,在那里我可以显示错误或让用户通过.
有任何想法吗?
最初我有它所以程序将返回"true"或错误消息,作为一个jstring,但我的老板希望它如上所述.
有一种常见的技术可以通过在参数中使用对象数组来模拟附加的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];
}
Run Code Online (Sandbox Code Playgroud)
返回结果对象还有另一种方法
class static TakeInfoResult{
boolean canLogon;
String error;
}
TakeInfoResult object = takeInfo(domain, userID, "", userPass);
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,您需要在JNI层中编程更多.
| 归档时间: |
|
| 查看次数: |
8132 次 |
| 最近记录: |