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”作为返回类型?
答案 0 :(得分:1)
您的Java应用程序不可能有意义地处理结构,指针甚至指向从本机代码返回的结构的指针。因此,JNI不允许这样做。
但是,如果您希望将指向结构的指针视为一个不透明的句柄,它只是在Java中传递但只在本机代码中处理过,那么您可以定义本机方法,如:
public native int add();
或者
public native long add();
您应该使用哪一个取决于您的本机代码是否使用32位或64位指针。然后,您的本机代码必须在返回之前正确地从指针转换为jint或jlong。