4

C++プログラムを呼び出してユーザーを認証するJavaプログラムがあります。プログラムが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の場合は、エラーメッセージを取得し、それを使用して&errorを更新します。次に、そのブール値をJavaプログラムに戻します。ここで、エラーを表示したり、ユーザーに通したりすることができます。

何か案は?

もともと私はそれを持っていたので、プログラムはjstringとして「true」またはエラーメッセージのいずれかを返しますが、私の上司は上記のようにそれを望んでいます。

4

2 に答える 2

8

パラメータのオブジェクト配列を使用して、追加の出力パラメータをシミュレートする一般的な手法があります。

例えば。

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);

2番目のケースでは、JNIレイヤーでさらにプログラミングする必要があります。

于 2009-10-07T17:01:04.087 に答える
0

あなたのシナリオがあなたが説明するのと同じくらい単純であるなら、なぜ「本当の」場合にNULLを返し(これは通常あなたが期待するものの逆ですが)、何かがうまくいかない場合にエラー構造体へのポインタを返しませんか?

于 2009-10-07T16:42:18.620 に答える