-2

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;

}

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

4

1 回答 1

1

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

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

public native int add();

或者

public native long add();

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

于 2012-12-25T06:09:34.587 回答