void CLanIcqDlg::OnStartwork() {
 // ......................
  CWinThread pThreadListen=::AfxBeginThread(_ListenTcpThread,this);}
//...
UINT _ListenTcpThread(LPVOID lparam){
   CSocket servSock;       CLanIcqDlg *pDlg=(CLanIcqDlg *)(lparam);
       pDlg->m_currentPort=12345;;
       AfxMessageBox("1"); 
   
 int creatState=servSock.Create(pDlg->m_currentPort);//创建
       AfxMessageBox("2"); 
//一到这个Create就出问题,说是wincore.cpp出错,
//各位帮一下看看是什么问题,去掉这个Create之类的和CSocket之类有关的东西又可以继续执行,线程应该没问题的吧,很郁闷呢搞到:( :(

解决方案 »

  1.   

    对呀,我以前也试过这样的问题,你可以试试把CSocket servSock 改成CSocket* servSock=new CSocket();
    还要注意的是你要调用Create函数时必须要用->,即servSock->Create(......
    你成功了的话说一声,同时希望哪个大虾解释一下为什么。
      

  2.   

    我瞎子一样的弄了一个下午,我终于知道是为什么了,我开始的时候是用wizard。选了静态链接库,
    打死都不行,
    后来我用动态一样的代码又没点问题,我简直要晕撅了
     哪位兄弟给我解释一下,, ,因为我用静态链接就是想再每台电脑上运行。
    这样又不行了 我这个程序写出来真的是费的 哎
      

  3.   

    因为是用wizard向导,选择了winsock,有初始化的,if (!AfxSocketInit())
    {
    AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
    return FALSE;
    }
      为什么静态链接不能在线程里面创建CSocket罗 
       redby(红孩) 你的意思是即使是用动态链接写好的程序,把动态链接什么都放在包里面??做安装包,用什么工具好点的啊,
      

  4.   

    我在自己的vc上做了一个简单的试验,我先用向导建立有个try1的工程,选择了winsock,静态链接库,自己添加了一个Button,处理消息的函数是Ctry1Dlg::OnButton1(){
    ::AfxBeginThread(_STEP1,this);
    }
    UINT _STEP1(LPVOID lparam){
     CScoket servSock;
     servSock.Create(12345);
     AfxMessageBox("1");
     servSock.Close();
     return 0;
    } //编译通过,但执行就挂了,wincore.cpp出错
    ................................................
    同样的代码,选择动态链接,
    编译通过,运行没问题,
    我真的不明白,我的系统是xp,
      

  5.   

    问题得到解决了,编译的时候不论是静态还是动态,将编译改成release,window平台都能应用,开心:)