C ++ - CreateThread - 编译错误

时间:2012-06-03 14:20:56

标签: c++ windows createthread

这是我第一次处理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知道这是什么问题?

(我正在使用windows xp)

感谢。

3 个答案:

答案 0 :(得分:2)

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

#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。

答案 1 :(得分:1)

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

下次请添加错误。

答案 2 :(得分:0)

嗯,如果你提供了一个最小的代码示例并且至少有一个编译错误,那就太好了。但很好,我会假装是一个编译器。假设您的代码片段在函数内部,那么您在其中有一个函数声明:

DWORD WINAPI readFromPort(LPVOID lpParam ){}

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

此外,readFromPort函数在调用CreateThread之后声明,其中它被作为参数引用。所以即使你把所有这些都放在一个全局范围内也是行不通的(这本身就是一个坏主意)。