代码如下:
        CUnzip *pUnzip=new CUnzip( "temp.zip" );
BOOL bExtract=FALSE;
try
{
::DeleteFile("temp.sx"); 
pUnzip->SwapSize("temp.sx");
bExtract=TRUE;
MessageBox("解压成功");
delete pUnzip;
}
catch( CZipException e )
{
CString s;
s.Format("解压错误:%s",e.GetString());
MessageBox(s);
delete pUnzip;
return;
}
问题如下:
可以解压,但是不退出程序进行第二次解压时(temp.zip已经改变),出现异常:"解压错误:Problem while unzipping file"
退出程序,重新解压没有问题.
请问,是何问题,如何解决?

解决方案 »

  1.   

    Reset了么?
    尤其全局和静态变量
      

  2.   

    CUnzip做在DLL中的,可能它在析构时屁股没擦干净
      

  3.   

    弱弱地说一句:
    如果你的分析的对的话,dll文件无法修改的话,想用CUnzip类,把上面这行:
    CUnzip*pUnzip=new CUnzip( "temp.zip" );
    改成:
    CUnzip pUnzip( "temp.zip" );
    后面的代码也跟着改一下,这样把战场从堆中移到栈中来的话,试试可以吗?
      

  4.   

    to:Snow_Ice11111(雪上加冰) 
       在new之前,我就是这样的.
       后来我才改为用new的
       有源代码,我正在分析
      

  5.   

    应该是CUnzip析构过程中没有恢复一些状态,比如关闭文件。
      

  6.   

    我忘记了改的哪儿
    如果你要,留下个E-MAIL,我将改好后的发给你,你自己去对比找一下改的是哪儿