一样的代码,在我同学电脑上调试的时候就没问题(这句没问题,但是也存在其他一些问题),在我电脑上调试就在那句那里有错。而在使用共享DLL时是没问题的,但是将工程属性改为使用静态MFC库时就会出现上述错误,是不是共享动态库和静态库之间的差别导致的上述问题?怎么解决?

解决方案 »

  1.   

    http://blog.sina.com.cn/s/blog_4a33cfca0100bk2k.html
    参考这个文章在每个新的线程上调用如下代码:void SocketThreadInit() 

    #ifndef   _AFXDLL 
    #define   _AFX_SOCK_THREAD_STATE   AFX_MODULE_THREAD_STATE 
    #define   _afxSockThreadState   AfxGetModuleThreadState() 
        _AFX_SOCK_THREAD_STATE*   pState = _afxSockThreadState; 
        if(pState->m_pmapSocketHandle == NULL) 
            pState->m_pmapSocketHandle = new CMapPtrToPtr; 
        if(pState->m_pmapDeadSockets == NULL) 
            pState->m_pmapDeadSockets = new CMapPtrToPtr; 
        if(pState->m_plistSocketNotifications == NULL) 
            pState->m_plistSocketNotifications = new CPtrList; 
    #endif 
    }