JNA返回结构体:
   在C++中返回一个大结构体比较耗资源的,不可取.一般可以通过传入指针或变量引用值, 在方法中修改达到返回结果的目的。
   java对象默认的是传地址引用,那么我们就可以在C中修改java对象后返回,减少对象传递时的性能损耗。

 

// 结构体定义
typedef struct _Point
{
int x;
int y;
}Point;

/**
*方式一: 在C中传入结构体指针
*/
JNAAPI bool translate( Point *pt,int dx,int dy )
{
pt->x=pt->x+dx;
pt->y=pt->y+dy;
return true;
}

/**
*方式二: 在C中传入结构体引用
*/
JNAAPI bool translate( Point &pt,int dx,int dy )
{
pt.x=pt.x+dx;
pt.y=pt.y+dy;
return true;
}

// Java代码
Point point=new Point();
point.x=20;
point.y=20;
JNALib.INSTANCE.translate(point, 10, 10);
System.out.println("Source: "+point.x+"\t"+point.y);
// 输出结果: 30 30