C
Android で Javaのネイティブ関数を呼び出したいときに、この問題が発生しますJNI
。その関数のパラメーターとして構造体へのポインターを渡し、C
そのポインターにメモリを割り当てます。
C
Javaでこの関数を呼び出す方法を教えてください。私は長い間グーグルで検索しましたが、報酬が得られません。
次のようなコードで、A は構造体の名前です。
JNIEXPORT int JNICALL
Java_pkgname_NativeTools_create(JNIEnv *env, jclass jclazz, A **ptr) {
*ptr = (A*) malloc(sizeof(A));
if (*ptr != NULL ) {
return 0;
} else {
return -1;
}
}
ネイティブインターフェイスの書き方がわかりません:
public class NativeTools{
static {
System.loadLibrary("LibName");
}
// TODO don't know what type in JNI should I use to declare this native function?
public static native int create(?);
}
どうもありがとう、そして私の下手な英語でごめんなさい:(