• 3212阅读
  • 0回复

[提问]不清楚为什么会报错,帮忙看看 [复制链接]

上一主题 下一主题
离线my253629725
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-10

我的开发环境是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;
}
快速回复
限100 字节
 
上一个 下一个