简体   繁体   English

Windows中创建线程时不兼容的类型

[英]incompatible types when creating thread in Windows

I have created an app in which I want a thread to handle listen-UDP separately and make me a buffer, but when I try to pass it to thread it says there are compatibility issues 我创建了一个应用程序,在该应用程序中,我希望线程分别处理listen-UDP并使其成为缓冲区,但是当我尝试将其传递给线程时,它说存在兼容性问题

hThread = CreateThread( 
          NULL,                   // default security attributes
          0,                      // use default stack size  
          start,       // thread function name
          &buffer,          // argument to thread function 
          0,                      // use default creation flags 
          &dwThreadId);

my start function is 我的启动功能是

void start(buffer_t *buffer)
{

    SOCKET s;
    struct sockaddr_in server, si_other;
    int slen , recv_len;
    char buf[BUFLEN];
    WSADATA wsa;
}

and the error is 错误是

1 IntelliSense: argument of type "void (*)(buffer_t *buffer)" is incompatible with parameter of type "LPTHREAD_START_ROUTINE" c:\\users\\madihamalik\\documents\\visual studio 2010\\projects\\udp listener\\udp listener\\listerner.c 189 12 UDP listener 1 IntelliSense:类型为“ void(*)(buffer_t * buffer)”的参数与类型为“ LPTHREAD_START_ROUTINE”的参数不兼容c:\\ users \\ madihamalik \\ documents \\ visual studio 2010 \\ projects \\ udp listener \\ udp listener \\ listerner.c 189 12个UDP侦听器

Try below code that might help you.. 请尝试以下可能对您有帮助的代码。

DWORD start(LPVOID lpdwThreadParam)
{
    buffer_t *buffer = (buffer_t *)lpdwThreadParam; //Type cast your argument here
    SOCKET s;
    struct sockaddr_in server, si_other;
    int slen, recv_len;
    char buf[BUFLEN];
    WSADATA wsa;
    ...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM