JNI のポインターへのポインターに関する質問があります。
Cで次の関数がある場合:
void myfunction(int **pp);
int **pp
Javaでの参照を取得するにはどうすればよいですか? また、参照を変更するために参照を JNI 関数に渡すにはどうすればよいですか?
解決に導くことができますか?単純なポインターは操作できますが、ポインターへのポインターは操作できません。
JNI のポインターへのポインターに関する質問があります。
Cで次の関数がある場合:
void myfunction(int **pp);
int **pp
Javaでの参照を取得するにはどうすればよいですか? また、参照を変更するために参照を JNI 関数に渡すにはどうすればよいですか?
解決に導くことができますか?単純なポインターは操作できますが、ポインターへのポインターは操作できません。
JNI に相当するものは、代わりにメソッドの最初の引数を long プリミティブ配列に置き換えます。
int alloc_opaque_type(T** pp);
対
public static native int alloc_opaque_type(long[] pp);
Java では、Java オブジェクトを変更するためのポインターとして取得することはできません。また、Java オブジェクトを C 構造体または C++ オブジェクトに直接変換することもできません。ただし、Java オブジェクトを としてjobject
取得し、そのプリミティブ値 (文字列からの int や char など) を手動で取得し、それらの値を使用して C コードで必要なものを構築できます。、などにキャストできますが、jint
または配列にはキャストできません。int
jdouble
double
jobject
struct
ポインターを取得して Java に ( としてint
) 渡した場合は、それint
を C に (JNI 経由で)int
戻し、ポインターに変換することができます。