Java使用JNA调用dll接口报Invalid memory access错误

问题是这样的:
我要调用C++的dll里面有两个接口:
A接口:

int __stdcall sync_OpenTagQuery(HSYNCBASE hDB, const char *szNameMask, const char *szComentMask, int nNodeId, HSTMT *hStmt);

B接口:

int __stdcall sync_OpenHisQuery(HSYNCBASE hDB , int nTagId, S_TIME tmBeginTime,S_TIME tmEndTime, int nStep, HSTMT *hStmt);

相关数据结构:

typedef void*  HSYNCBASE; 
typedef void*  HSTMT; 

typedef struct {
    unsigned char year;  //年 
    unsigned char mon;   //月
    unsigned char day;   //日
    unsigned char hour;  //时
    unsigned char min;   //分
    unsigned char sec;   //秒
} S_TIME; //秒级时间

Java中的实现:
a接口:

int sync_OpenTagQuery(Pointer hDB, String szNameMask, String szComentMask, int nNodeId, PointerByReference hStmt);

b接口:

int sync_OpenHisQuery(Pointer hDB, int nTagId, S_TIME tmBeginTime, S_TIME tmEndTime, int nStep, PointerByReference hStmt);

相关数据结构:

public class S_TIME extends Structure  {
    public byte year;  //年
    public byte mon;   //月
    public byte day;   //日
    public byte hour;  //时
    public byte min;   //分
    public byte sec;   //秒
}

目前A接口对应的a接口已调通,但是B接口对应的b接口一调用就报以下错误 :

img

查了很多资料都是说参数类型不匹配的导致的,但是又具体找不到哪里有问题,希望有懂的朋友能指点一二,万分感谢

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。