我的开发环境是VS2008+QT4.7.3
这是我新建的一个DLL项目,这段代码的功能是连接读卡器并调用第三方给的DLL读出卡里的内容,但是在调试的时候代码最后部分会报错
long baud = -1;
int i = 0;
int icdev = -1;
int beep = - 1;
for(i = 0 ;i < 4 ;i++)
{
baud = chk_baud(i); //检测通讯端口的波特率
if(baud >= 0)
break;
}
if(baud == -1)
return -1;
for(i = 0 ;i < 4 ;i++)
{
icdev = auto_init(i ,baud);
if(icdev > 0)
break;
}
if(icdev < 0)
return -2;
beep = dv_beep(icdev ,10);
//检测读写器中是否有卡
short status ,st;
st = get_status(icdev ,&status);
if(st < 0)
return -3;
if(status == 0)
return -4;
unsigned char userid[21];
unsigned char customeno[50];
unsigned char orderdate[50];
unsigned long orderamount = -1;
unsigned int orders = -1;
unsigned long ordertotal = -1;
unsigned char fgs[100];
unsigned char glz[100];
unsigned char cardstatus[100];
char buf[200];
memset(userid ,0x0 ,sizeof userid);
memset(customeno ,0x0 ,sizeof customeno);
memset(orderdate ,0x0 ,sizeof orderdate);
memset(fgs ,0x0 ,sizeof fgs);
memset(glz ,0x0 ,sizeof glz);
memset(cardstatus ,0x0 ,sizeof cardstatus);
memset(buf ,0x0 ,sizeof buf);
//icdev = init_dev();
if(icdev > 0)
{
QLibrary mylib("dfsoft_hanas.dll");
int result;
if (mylib.load()) //判断是否正确加载
{
ReadFun open = (ReadFun)mylib.resolve("readcard_s"); //援引 readcard_s() 函数
if (open) //是否成功连接上 readcard_s() 函数
{
result = open(icdev, userid, customeno, orderdate, &orderamount, &orders, &ordertotal, fgs, glz, cardstatus); //这里函数指针调用dll中的 readcard_s() 函数
if(0 == result)
{
//sprintf(read_info ,"%s|%s|%s|%ld|%d|%ld|%s|%s|%s|" ,userid, customeno, orderdate, orderamount, orders, ordertotal, fgs, glz, cardstatus);
sprintf(buf ,"%s|" ,userid);
}
else
return 1;
}
}
}//单步调试到这里就报0xC0000005: 读取位置 0x0000000f 时发生访问冲突
else {
return icdev;
}