copy是 CFile类,放在程序里想打开自己读些附带在后面得数据。
 Copy.Open(__argv[0],CFile::modeRead)在98下怎么老提示错误啊?
在2000下又运行通过,查了下MSDN好像也没找到啥啊。

解决方案 »

  1.   

    argv[0]是程序本身的名字吧,应该是argv[1]往后面才是参数
    可以把argv[]列表打印出来看看到底是什么情况
      

  2.   

    argv[0]就是程序本身的路径啊!我在写的程序后面放了个动态库,想程序执行时把动态库释放出来,但好像用上面的句子在WIN98下读不了自己,在WIN2000下调试通过,WIN98下提示“没有找到一未命名文件”,但我前面加了句AFXMESSAGEBOX(__ARGV[0]);对话框显示出的路径是对的啊!奇怪的很啊,我把__argv[0]随便改成一个正确文件路径还是提示“没有找到一未命名文件”,不知道为什么会这样啊,WIN2000下就没问题的
      

  3.   

    不管是设么你先看看argv[0]的内容,然后再说话
      

  4.   

    上面不是说了吗!!!
    “但我前面加了句AFXMESSAGEBOX(__ARGV[0]);对话框显示出的路径是对的啊!”
      

  5.   

    现给出程序段,这个程序我是想把自己附在程序可执行文件后的一个动态库自己释放出来,这样就不用自己烤了,用也只需要一个文件,但这段代码在2000下运行良好,但在98下就老提示“没有找到一未命名文件”,查了半天也不知道是什么问题,唉!
    CFile DllFile,Copy;
        
        char direct[MAX_PATH];
    ::GetSystemDirectory (direct,MAX_PATH);
    CString Directory;
    Directory=direct;
    Directory=Directory+"\\HideDialogBox.dll";
    CFileFind finder;
           BOOL bWorking = finder.FindFile(Directory);
       if (bWorking)
        DllFile.Open(Directory,OF_READ);
       
       if ((!bWorking)||DllFile.GetLength()!=28672)
       {
       
       if (bWorking)
                    DllFile.Open(Directory,CFile::modeWrite);
    else
    DllFile.Open(Directory,CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive);

    AfxMessageBox(__argv[0]);
    //Copy.Duplicate();
              if (Copy(_T(__argv[0]),CFile::modeRead)==0)
    AfxMessageBox("error");
                 Copy.SeekToEnd();
     
      char DllBuffer[28672];
      Copy.Seek(-28672,CFile::current);
      
      Copy.Read(DllBuffer,sizeof(DllBuffer));
     
      DllFile.SeekToEnd();
     
      DllFile.Write(DllBuffer,28672);
     
    }
      

  6.   

    上面写错了点,if (Copy(_T(__argv[0]),CFile::modeRead)==0)
    应该是if (Copy.Open(_T(__argv[0]),CFile::modeRead)==0)