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

Pointers 在java中,如何用结构指针作为返回类型在C中声明本机方法?,pointers,types,struct,java-native-interface,return,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”,并将结构指针作为返回类型?您的Java应用程序不可能有意义地处理从本机代码返回的结构、指针,甚至指向结构的指针。因此,JNI

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”,并将结构指针作为返回类型?

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

但是,如果希望将指向结构的指针视为不透明句柄,该句柄在Java中简单传递,但仅在本机代码中处理,则可以定义本机方法,如:

public native int add();


您应该使用哪一个将取决于您的本机代码是否使用32位或64位指针。然后,您的本机代码必须正确地从指针强制转换到jint或jlong(视情况而定),然后才能返回它。

我不知道您的问题,但您是否尝试编译此代码?不是相同的代码,但类似。是。谢谢..我找到了..很抱歉,回复太晚:)
public native long add();