C++ - 创建线程编译错误



这是我第一次处理Windows。我尝试创建线程,但无法编译我的代码。

这是我代码的一部分:

WORD _tid;
HANDLE  readerThread= CreateThread(0,0,readFromPort,0,0,&_tid); 
DWORD WINAPI readFromPort(LPVOID lpParam ){}

我也试过:

LPDWORD_tid;
HANDLE  readerThread= CreateThread(0,0,readFromPort,0,0,_tid); 
DWORD WINAPI readFromPort(LPVOID lpParam ){}

两者都没有编译。 onyone知道问题出在哪里?

(我正在使用视窗xp)

谢谢。

好吧,不知道你有什么错误。但可以为您提供一个很好的例子

#include "windows.h"
DWORD WINAPI readFromPort(LPVOID lpParam ){return 0;}
int _tmain(int argc, _TCHAR* argv[])
{
    DWORD _tid;
    HANDLE  readerThread= CreateThread(0,0,readFromPort,0,0,&_tid); 
    return 0;
}

与您的区别:

  1. _tid是DWORD,而不是WORD。

  2. readFromPort 返回值 0。

让我猜猜:readFromPort必须返回一个值?

下次也请添加错误。

好吧,如果您提供一个最小的代码示例和至少一个编译错误,那就太好了。但是好吧,我会假装自己是编译器。假设你的代码片段在一个函数内,你有一个函数声明:

DWORD WINAPI readFromPort(LPVOID lpParam ){}

我相信这把你搞砸了。您必须声明/定义其他函数范围之外的函数。

此外,readFromPort函数是在调用CreateThread之后声明的,该函数被引用为参数。因此,即使您将所有这些放在全局范围内,它也不会起作用(这本身就是一个坏主意)。

最新更新