C++ C++;-CreateThread-编译错误

C++ C++;-CreateThread-编译错误,c++,windows,createthread,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);

这是我第一次使用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)


谢谢。

好吧,如果您提供了一个最小的代码示例和至少一个编译错误,那就太好了。但很好,我会假装是一个编译器。假设您的代码段位于函数中,则其中包含函数声明:

DWORD WINAPI readFromPort(LPVOID lpParam ){}
我相信那会把你搞砸的。您必须在其他函数的作用域之外声明/定义函数


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

如果您提供了一个最小的代码示例和至少一个编译错误,那就太好了。但很好,我会假装是一个编译器。假设您的代码段位于函数中,则其中包含函数声明:

DWORD WINAPI readFromPort(LPVOID lpParam ){}
我相信那会把你搞砸的。您必须在其他函数的作用域之外声明/定义函数


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

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


下次请添加错误。

让我猜猜:
readFromPort
必须返回值吗


下次请添加错误。

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

#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;
}
与您的不同之处:

  • _tid是DWORD,不是WORD

  • readFromPort返回值0


  • 我不知道你有什么错。但可以为你提供一个很好的例子

    #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;
    }
    
    与您的不同之处:

  • _tid是DWORD,不是WORD

  • readFromPort返回值0


  • 嗯,错在哪里?你需要让我们知道。最好是一个简单的示例代码请使用
    \u beginthreadex
    而不是
    CreateThread
    (如果您使用的是CRT库,您通常会在不知不觉中这样做)。那么,错误是什么呢?你需要让我们知道。最好是一个简单的示例代码,请使用
    \u beginthreadex
    而不是
    CreateThread
    (如果您使用的是CRT库,您通常会不知不觉地这样做)。