分享

JNA修改结构体

 arm_embed 2012-11-24

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

 

  

Java代码  收藏代码
  1. // 结构体定义  
  2. typedef struct  
  3. {  
  4.     int x;  
  5.     int y;  
  6. }Point;  
  7.   
  8. /** 
  9.  *方式一: 在C中传入结构体指针 
  10.  */  
  11. JNAAPI bool translate( Point *pt,int dx,int dy )  
  12. {  
  13.     pt->x=pt->x+dx;  
  14.     pt->y=pt->y+dy;  
  15.     return true;  
  16. }  
  17.   
  18. /** 
  19.  *方式二: 在C中传入结构体引用 
  20.  */  
  21. JNAAPI bool translate( Point &pt,int dx,int dy )  
  22. {  
  23.     pt.x=pt.x+dx;  
  24.     pt.y=pt.y+dy;  
  25.     return true;  
  26. }  
  27.   
  28. // java代码  
  29. Point point=new Point();  
  30. point.x=20;  
  31. point.y=20;  
  32. Gui.gui.translate(point, 1010);  
  33. System.out.println("Source: "+point.x+"\t"+point.y);  
  34. 输出结果: 30 30  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多