java – JNI通过引用传递,是否可能?
发布时间:2020-12-15 08:31:00 所属栏目:Java 来源:网络整理
导读:我有一个 Java程序调用C程序来验证用户.我希望程序返回true或false,如果为false,则更新指向错误消息变量的指针,然后我可以从Java程序中获取该指针. 另一个探索: 本机方法看起来像这样: public native String takeInfo(String nt_domain,String nt_id,Strin
我有一个
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程序中,我将检查用户是否经过身份验证并将其存储在布尔值中,则获取错误消息并使用它更新&错误.然后将该布尔值返回到我的Java程序,在那里我可以显示错误或让用户通过. 有任何想法吗? 最初我有它所以程序将返回“true”或错误消息,作为一个jstring,但我的老板希望它如上所述. 解决方法
有一种常见的技术可以通过在参数中使用对象数组来模拟附加的out参数.
例如. public native String takeInfo(String nt_domain,String[] error); boolean canLogin = takeInfo(domain,"",error); if(!canLogin){ String message = error[0]; } 返回结果对象还有另一种方法 class static TakeInfoResult{ boolean canLogon; String error; } TakeInfoResult object = takeInfo(domain,userPass); 在第二种情况下,您需要在JNI层中编程更多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |