College Kid
College Kid

Reputation: 11

CreateThread() error

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>

    void Thread1( LPVOID param)
    {
      int a;
      a = *((int *)param);
      for (int i= 0; i <10; i++)
      printf("%d\n", a);
    }

    int main()
    {
      int a =4;
      int ThreadId;
      CreateThread( 0, 0x0100, Thread1, &a, 0, &ThreadId);

      for( int i = 0; i <11; i++)
          Sleep( 1);

      return( 1);
    }

This is a simple code but I am not able to figure it out why visual studio is giving me error:

error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void *)' to 'unsigned long (__stdcall *)(void *)' None of the functions with this name in scope match the target type Error executing cl.exe.

Upvotes: 1

Views: 2723

Answers (1)

mattn
mattn

Reputation: 7723

define as following

DWORD WINAPI MyThreadProc(LPVOID lpParameter)

CreateThread() require __stdcall calling convention.

Upvotes: 3

Related Questions