JNA返回结构体:
在C++中返回一个大结构体比较耗资源的,不可取.一般可以通过传入指针或变量引用值, 在方法中修改达到返回结果的目的.
java对象默认的是传地址引用,那么我们就可以在C中修改java对象后返回,减少对象传递时的性能损耗.
-
- typedef struct
- {
- int x;
- int y;
- }Point;
-
-
-
-
- JNAAPI bool translate( Point *pt,int dx,int dy )
- {
- pt->x=pt->x+dx;
- pt->y=pt->y+dy;
- return true;
- }
-
-
-
-
- JNAAPI bool translate( Point &pt,int dx,int dy )
- {
- pt.x=pt.x+dx;
- pt.y=pt.y+dy;
- return true;
- }
-
-
- Point point=new Point();
- point.x=20;
- point.y=20;
- Gui.gui.translate(point, 10, 10);
- System.out.println("Source: "+point.x+"\t"+point.y);
- 输出结果: 30 30