gpt4 book ai didi

c++ - LNK2019无法解析的外部符号如何修复

转载 作者:行者123 更新时间:2023-11-28 02:33:50 25 4
gpt4 key购买 nike

我有一个用于项目的非常简单的线程类。我刚刚开始在这方面取得进展,但由于 LNK2019 错误我被困住了,我不知道如何修复。我已将问题缩小到一行。也许有人可以帮助指导我如何修复它。

以下是我正在制作的类(class):

#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 的第二行,下面是 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++。

最佳答案

您没有实现start_helperfunction,因此链接器无法找到它。您需要实际编写一个具有该名称的静态成员函数。最简单的可能看起来像这样:

DWORD WINAPI Threading::start_helperfunction(LPVOID ptr)
{
return 0;
}

关于c++ - LNK2019无法解析的外部符号如何修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28203427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com