JNI& C - 指针指针

时间:2013-06-04 13:23:08

标签: java c java-native-interface

我有一个与JNI指针有关的问题。

如果我在C中有以下功能:

void myfunction(int **pp);

如何在Java中获取int **pp的引用?如何将参考传递给JNI函数以进行修改?

你能引导我找到解决方案吗?我可以使用简单的指针,但不能使用指针指针。

2 个答案:

答案 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转换为intjdouble转换为double等等,但不能jobject转换为struct或数组。< / p>

如果您获得了一个指针并将其传递给Java(作为int),那么您可以将int传递回C(通过JNI)并将int转换回指针。