如何在C中使用结构指针声明一个本机方法作为java中的返回类型?

时间:2012-12-07 06:49:43

标签: pointers types struct java-native-interface return

C代码:

typedef struct{

int a;

int b;

}NODE;

NODE *node;

NODE* add(int c){

node->a=node->a+10;

c=node->a+node->b;

node->a=c;

return node;

}

如何使用JNI在Java中使用结构指针声明我的本机函数“add”作为返回类型?

1 个答案:

答案 0 :(得分:1)

您的Java应用程序不可能有意义地处理结构,指针甚至指向从本机代码返回的结构的指针。因此,JNI不允许这样做。

但是,如果您希望将指向结构的指针视为一个不透明的句柄,它只是在Java中传递但只在本机代码中处理过,那么您可以定义本机方法,如:

public native int add();

或者

public native long add();

您应该使用哪一个取决于您的本机代码是否使用32位或64位指针。然后,您的本机代码必须在返回之前正确地从指针转换为jint或jlong​​。