0

私は自分のネイティブ コードの JNI ラッパーを書いています。私のコードは fallows です。

私のJavaネイティブメソッド - >

public native static String GetMimo(String input, String out1,
        String out2);

私のCネイティブメソッド - >

jstring Java_test_mimo_mimojni_DataFecth_GetMimo( JNIEnv* env,String input, String output1, String output2);
{

char *outmimoOne , *outmimoTwo;
GetMimo(&outmimo, &outmimoTwo); // My Native code function call , it allocates the memory and fill the data 

return (*env)->(env,outmimoTwo);
}

ここでは、データ outmimoOne を output1 に、 outmimoTwo を output2 に返します。私は Java を初めて使用するので、これらの両方の変数を、C で行う参照による取得として Java 呼び出しに正確に返す方法を教えてください。

4

3 に答える 3

0

内部に 2 つの参照を持つオブジェクトまたはデータ構造を作成し、それを返します。

public class Pair<T1, T2> {
    private final T1 x;
    private final T2 y;

    public Pair<T1, T2>(T1 a, T2 b) {
        this.x = a;
        this.y = b;
    }

    public T1 getX() { return this.x; }
    public T2 getY() { return this.y; }
}
于 2013-04-20T12:41:14.447 に答える
-1

できません。Java では、引数は値によって渡されます。したがって、このメソッドは、呼び出し元の out1 (および out2) への参照のコピーを受け取ります。そして、このコピーに割り当てたものは、呼び出し元には表示されません。これはコピーであるためです。

于 2013-04-20T12:40:48.187 に答える