0

这是我第一次处理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 ){}

都没有编译。有人知道是什么问题吗?

(我用的是windows xp)

谢谢。

4

3 回答 3

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。

于 2012-06-03T14:43:23.980 回答
1

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

下次请也添加错误。

于 2012-06-03T14:36:15.460 回答
0

好吧,如果您提供了一个最小的代码示例并且至少有一个编译错误,那就太好了。不过没关系,我会假装自己是个编译器。假设您的代码片段在函数内部,则其中有一个函数声明:

DWORD WINAPI readFromPort(LPVOID lpParam ){}

我相信那是在搞砸你。您必须在其他函数范围之外声明/定义函数。

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

于 2012-06-03T14:29:19.540 回答