CFindFile finder ;我的程序中执行到这句时会出现断言错误,提示m_hFind!=0请问这是什么问题? 即使把这句放到程序主程序的开始也会出现这个问题......

解决方案 »

  1.   

    WTL是开源的,这种问题定位到代码一看就知道了。
      

  2.   

    不可能是这句出问题,应该是后面的语句出问题。
    我猜你没有执行finder.FindFile(...)就直接执行finder.GetXXX()去了。
      

  3.   

    代码前面没有和这句相关的代码
    而且真的就是在这句出的问题,我跟到构造函数中去了,还没进去,就出现m_hFind!=0了
      

  4.   

    构造函数中没有ATLASSERT(m_hFind!=0)的语句,可能断点错位了,完全重新编译一次试试,或者用F11跟踪进去看看到底是哪个函数里面。
      

  5.   

    跟进去发现在这个函数中出现的错误,但是还是不知道是为什么
    _CSTRING_NS::CString GetFilePath() const
    {
    ATLASSERT(m_hFind != NULL); _CSTRING_NS::CString strResult = m_lpszRoot;                ......
      

  6.   

    没错吧,肯定不是构造函数,而是GetXXX函数的断言失败,你应该先执行FindFile方法。断点肯定是错位的,调试信息文件跟源码文件不匹配,所以需要完全重新编译。
      

  7.   

    是啊, 你好厉害。呵...
    可是我rebuild all了好几次 还是不起作用的啊 
    为什么构造函数还没执行,就去执行了getXXX函数呢
      

  8.   

    有时候工程编译后会提示我XXX.pdb文件有问题,我怀疑这个文件跟你说的符号文件有关系吧 。你知道它是做什么的么?
      

  9.   

    手工删除pdb文件,它可能是只读的