错误信息如下:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Unsupported argument type com.synjones.angel.CardData at parameter 2 of function Syn_ReadMsg
at com.sun.jna.Function.convertArgument(Function.java:552)
at com.sun.jna.Function.invoke(Function.java:258)
at com.sun.jna.Library$Handler.invoke(Library.java:216)
at $Proxy0.Syn_ReadMsg(Unknown Source)
at com.synjones.angel.TestDlg.actionPerformed(TestDlg.java:302)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)出错函数原型:public int Syn_ReadMsg(int iPort, int iIfOpen, CardData pINCardData);
调用如下:SynIDCardAPI.INSTANCE.Syn_ReadMsg(0, 0, idcardData);//idcardData为CardData
导入的DLL语句:SynIDCardAPI INSTANCE = (SynIDCardAPI)Native.loadLibrary("E:\\SynIDCardAPI", SynIDCardAPI.class);
DLL中C++声明:int _stdcall Syn_ReadMsg( int iPort,int iIfOpen,IDCardData *pIDCardData );
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Unsupported argument type com.synjones.angel.CardData at parameter 2 of function Syn_ReadMsg
at com.sun.jna.Function.convertArgument(Function.java:552)
at com.sun.jna.Function.invoke(Function.java:258)
at com.sun.jna.Library$Handler.invoke(Library.java:216)
at $Proxy0.Syn_ReadMsg(Unknown Source)
at com.synjones.angel.TestDlg.actionPerformed(TestDlg.java:302)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)出错函数原型:public int Syn_ReadMsg(int iPort, int iIfOpen, CardData pINCardData);
调用如下:SynIDCardAPI.INSTANCE.Syn_ReadMsg(0, 0, idcardData);//idcardData为CardData
导入的DLL语句:SynIDCardAPI INSTANCE = (SynIDCardAPI)Native.loadLibrary("E:\\SynIDCardAPI", SynIDCardAPI.class);
DLL中C++声明:int _stdcall Syn_ReadMsg( int iPort,int iIfOpen,IDCardData *pIDCardData );
解决方案 »
- Ext this.store为空或不是对象
- java 获取ftp文件的最后修改时间比实际时间少8小时
- hibernateTemplate问题
- 重装jdk,出现问题
- 大家能给我推荐一些java ee方面的书籍吗?讲JNDI,RMI,JMS那些东西的?
- java.sql 的问题,第一次发帖请勿必帮忙了.
- 把一张表里面的某个字段中的所有内容 复制到另张表的某个字段上 sql语句怎么写啊 各位帮帮忙 急着用
- hibernate sql 问题
- HIBERNATE的自定义类型主键的映射??
- 关于设置TOMCAT时,如何把8080端口改成80 端口!!!!!!!!!!!!!!!!!!!
- 生成properties文件的问题
- request.getRequestDispatcher没有反应
看下API说明
LZ学过英语没?提示这么清楚
不支持类com.synjones.angel.CardData中Syn_ReadMsg方法第二个参数
extends RuntimeException
抛出的异常表明向方法传递了一个不合法或不正确的参数。
说的很清楚啊
Syn_ReadMsg在TestDlg.java中,而CardData在CardData中。
typedef struct tagIDCardData{
char Name[32];
char Sex[6];
char Nation[20];
char Born[18];
char Address[72];
char IDCardNo[38];
char GrantDept[32];
char UserLifeBegin[18];
char UserLifeEnd[18];
char reserved[38];
char PhotoFileName[255];
}IDCardData;
下面是我在Java中的定义:
public class CardData {
public byte[] name;
public byte[] sex;
public byte[] nation;
public byte[] born;
public byte[] address;
public byte[] idCardNo;
public byte[] grantDept;
public byte[] userLifeBegin;
public byte[] userLifeEnd;
public byte[] reserved;
public byte[] photoFileName;
public CardData(){
name=new byte[32];
sex=new byte[6];
nation=new byte[20];
born=new byte[18];
address=new byte[72];
idCardNo=new byte[38];
grantDept=new byte[32];
userLifeBegin=new byte[18];
userLifeEnd=new byte[18];
reserved=new byte[38];
photoFileName=new byte[255];
}
}
这样有问题吗?
不是第二个参数,应该是值为2的参数。
加个断点看一下 在看一下 API的说明就知道你错误在那里了 试试看看
int Syn_ReadMsg(int a, int b, IDCardData c)
public class CardData entend Structure{
}