typedef struct
{
int Address;
int Length;
byte num[8][30];
}ID  ReadID(HANDLE hScanner,int nMax, ID *IDBuffer, int *nCounter);上面是VC 的 DLL 事, 对结构和 一个函数的描述
下面是我在JAVA 中,用JNA 时的声明,主要参考网上的程序,也不知道对不对。
 
public class UserStruct extends Structure{
  public static class ByReference extends UserStruct implements Structure.ByReference { }
  public static class ByValue extends UserStruct implements Structure.ByValue { }
  public int Address;
  public int Length;
  public UserStruct.ByValue[][] num= new UserStruct.ByValue[8][30];
    
}为了在按钮过程中调用,下面是接口里的声明:
ReadID(long hh,int nMax, UserStruct.ByReference idBuffer,int[] nCounter);最后在按钮里添加代码, 想调用这个函数,所以声明一个变量(结构变量)
看网上别人的程序,照搬改写如下:  UserStruct.ByReference idBuffer =new UserStruct.ByReference();
  int nCounter[]={0};
  int nMax=10;
  
  apiReturn=RFSAPIV2.INSTANCE.ReadID(hScanner[0], nMax, idBuffer, nCounter);
  上面是被调用的函数, 参数一是另个函数调用成功后的句柄,这个没问题
  第二个参数也没问题
  第四个也应该没问题
 
  问题我觉得应该出在第三个参数上, 现在不知道如何整,请高手指点一下,非常感谢!
  我按上面的编译,执行,报错如下:
  “
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at java.lang.reflect.Array.getLength(Native Method)
        at com.sun.jna.Structure.getNativeSize(Structure.java:1057)
        at com.sun.jna.Structure.getNativeAlignment(Structure.java:1007)
        at com.sun.jna.Structure.getNativeAlignment(Structure.java:1032)
        at com.sun.jna.Structure.calculateSize(Structure.java:946)
        at com.sun.jna.Structure.allocateMemory(Structure.java:219)
        at com.sun.jna.Structure.ensureAllocated(Structure.java:211)
        at com.sun.jna.Structure.write(Structure.java:554)
        at com.sun.jna.Function.convertArgument(Function.java:410)
        at com.sun.jna.Function.invoke(Function.java:206)
        at com.sun.jna.Library$Handler.invoke(Library.java:204)
        at $Proxy0.ReadID(Unknown Source)  
 后面还有,没列出来