下面的代码本来是我copy别人的,CreateThread里面的(LPTHREAD_START_ROUTINE)是我加上去的,可是不加的时候出现错误提示
error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (unsigned int *)' to 'unsigned long (__stdcall *)(void *)'于是我就加上了个,结果又错了,这次是链接错误,
unsigned long __stdcall TcpDataC2S(unsigned int *)" (?TcpDataC2S@@YGKPAI@Z) already defined in Proxy.obj
rebulid都不行。
hThreadC2S = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TcpDataC2S,
(LPVOID)sock,0,&dwThreadID);DWORD WINAPI TcpDataS2C(SOCKET* sock)
{
...............................
}

解决方案 »

  1.   

    DWORD WINAPI TcpDataS2C(LVOID parm)
    {
    ...............................
    }
      

  2.   

    unsigned long __stdcall TcpDataC2S(unsigned int *)" (?TcpDataC2S@@YGKPAI@Z) already defined in Proxy.obj
    __________
    这是说已经定义了一个DWORD WINAPI TcpDataS2C(SOCKET* sock)函数.重复了.DWORD WINAPI TcpDataS2C(LVOID parm)
    {
    SOCKET* sock = (SOCKET*)parm;
    ...............................
    }
      

  3.   

    我只定义了一次啊,怎么会出现这种错误呢。
    TcpDataS2C是我定义在一个tcpdirect.cpp这样的文件里面的。
    主文件叫proxy.cpp,其中include了tcpdirect.cpp。
    这里应该会产生proxy.obj、tcpdirect.cpp两个obj了,TcpDataC2S应该是存在tcpdirect.obj中的,怎么这里会提示proxy.obj里面也有呢
      

  4.   

    CPP要INCLUDE个什么,应该在PROJECT,ADD TO PROJECT里面添加CPP文件.
    或者在左侧的文件列表中点击右键,ADD TO PROJECT.
      

  5.   

    Thanks all above!
    原来就是include出现的问题。TcpDataS2C(SOCKET* sock)这样定义也是可以的。