我有一个与JNI指针有关的问题。
如果我在C中有以下功能:
void myfunction(int **pp);
如何在Java中获取int **pp
的引用?如何将参考传递给JNI函数以进行修改?
你能引导我找到解决方案吗?我可以使用简单的指针,但不能使用指针指针。
答案 0 :(得分:4)
JNI等效项将替代方法的第一个参数替换长基本数组。
int alloc_opaque_type(T** pp);
VS
public static native int alloc_opaque_type(long[] pp);
答案 1 :(得分:1)
在Java中,如果您要问的话,就不能将Java对象作为指针来修改它。您也不能将Java对象直接转换为C结构或C ++对象。但是,您可以将Java对象作为jobject
获取,手动获取其原始值(例如来自Strings的int或chars),并使用这些值来构造C代码中所需的任何内容。您可以将jint
转换为int
,jdouble
转换为double
等等,但不能jobject
转换为struct
或数组。< / p>
如果您获得了一个指针并将其传递给Java(作为int
),那么您可以将int
传递回C(通过JNI)并将int
转换回指针。