_beginthread(OnThreadProc, 0, (void *)&oAsynSocket);
編譯是報錯﹕'_beginthread' : cannot convert parameter 1 from 'void (class CAsyncSocket)' to 'void (__cdecl *)(void *)'但改用 AfxBeginThread((AFX_THREADPROC)OnThreadProc, (void *)&oAsynSocket);卻可以。參考http://expert.csdn.net/Expert/topic/1177/1177476.xml?temp=.4699823後改動如下﹕"Alt+F7"->C/C++ ->Code Generation-> MultiThread.
出現﹕ fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds解釋一下﹐為什麼﹖
還有﹕"Alt+F7"->C/C++ ->Code Generation-> MultiThread﹐or->Denug MultiThread, or -> Denug MultiThread DLL 有什麼區別。

解决方案 »

  1.   

    _beginthread()要求线程函数是全局函数或类静态函数。
      

  2.   

    AfxBeginThread对全局/静态线程函数进行了包装,到最后都启动一个CWinThread的UI线程类!!CWinThread有一个构造函数是以一全局或静态函数地址为参数的,而AfxBeginThread也有2个版本,一个调用CRumTimeClass为参数,一个使用全局或静态函数地址,然后使用_beginthreadex调用其线程函数!!_beginthreadex只适合C语言风格的线程启动!
      

  3.   

    剛來CSDN一個星期﹐不知道如何結貼和給分﹐請指導一下。
      

  4.   

    "Alt+F7"->C/C++ ->Code Generation-> MultiThread﹐or->Denug MultiThread, or -> Denug MultiThread DLL 有什麼區別。