我有一个非常简单的线程类我正在用于一个项目。我刚刚开始取得进展,但我因为LNK2019错误而陷入困境,我无法弄清楚如何修复。我把问题缩小到一条线。也许有人可以帮我指导我需要做些什么来解决它。
以下是我正在上课:
#ifndef __THREADING_H
#define __THREADING_H
#include <Windows.h>
class Threading {
public:
virtual void run() = 0;
void start();
void stop();
bool isStopped();
void cleanup();
private:
bool stopped;
HANDLE reference;
static DWORD WINAPI start_helperfunction(LPVOID ptr);
};
#endif // __THREADING_H
我收到错误的行是start_helperfunction
的第2行,下面是Threading::start_helperfunction
:
#include "Threading.h"
void Threading::start()
{
stopped = false;
reference = CreateThread(NULL, 0, Threading::start_helperfunction, this, NULL, NULL);
}
最后我得到的错误信息是:
error LNK2019: unresolved external symbol "private: static unsigned long __stdcall Threading::start_helperfunction(void *)" (?start_helperfunction@Threading@@CGKPAX@Z) referenced in function "public: void __thiscall Threading::start(void)" (?start@Threading@@QAEXXZ)
我不确定我做错了什么或尝试什么。我确定这是一个简单的修复。我不是C ++中最有经验的人。
答案 0 :(得分:3)
您没有实现start_helperfunction
,因此链接器无法找到它。您需要实际编写具有该名称的静态成员函数。最简单的可能是这样的:
DWORD WINAPI Threading::start_helperfunction(LPVOID ptr)
{
return 0;
}