C++编译错误LNK2019:未解决的外部符号错误

C++ compile error LNK2019: unresolved external symbol error

本文关键字:错误 外部 未解决 符号 编译 LNK2019 C++      更新时间:2023-10-16

这个问题以前已经解决了,但我一直在四处寻找,这些都没有解释如何解决这个问题,我所处的情况。其中大多数是关于外部图书馆的。

我正在尝试测试我的代码。我创建了一个测试类,该类正在尝试通过包含该类的头文件来访问另一个类。但是当我尝试调用它的函数时,它只会给我一个未解决的外部符号错误。

这是我目前的尝试。在这里,我尝试访问其他类的头文件以调用其函数。

卡测试.cpp

#include <iostream>
#include "../Header Files/Hand.h"
#include "../Header Files/HandValueCalculator.h"
using namespace std;
HandValueCalculator handValueCalculator;
Hand hand;
void Test() {
    bool value = handValueCalculator.DoesHandHaveAce(&hand.cards);
    cout << value << endl;
}

手价值计算器.h

#ifndef HANDVALUECALCULATOR_H_INCLUDED
#define HANDVALUECALCULATOR_H_INCLUDED
#include <vector>
#include "../Header Files/Card.h"
class HandValueCalculator {
public:
    HandValueCalculator();
    bool DoesHandHaveAce(std::vector<Card>* cards);
    int GetValueWithoutAce(std::vector<Card>* cards);
    int GetValueWithAce(std::vector<Card>* cards);
};
#endif // HANDVALUECALCULATOR_H_INCLUDED

手的价值计算器.cpp

#include "../Header Files/HandValueCalculator.h"
HandValueCalculator::HandValueCalculator() {
}
bool HandValueCalculator::DoesHandHaveAce(std::vector<Card>* cards) {
    int i;
    for (i = 0; i < cards.size(); i++) {
        if (cards.at(i).GetValue() == 11) {
            return true;
        }
    }
    return false;
}
int HandValueCalculator::GetValueWithoutAce(std::vector<Card>* cards) {
    for (i = 0; i < cards.size(); i++) {
        int cardValue = cards.at(i).GetValue()
            totalValue = totalValue + cardValue;
    }
    return 0;
}
int HandValueCalculator::GetValueWithAce(std::vector<Card>* cards) {
    return 0;
}

这是我遇到的错误,我认为编译器无法识别函数具有主体,并且因为它找不到声明函数的主体,因此返回这样的错误。

C:UsersfagelDocumentsBlackjackBlackjackCardTest.obj : error LNK2019: unresolved external symbol "public: void __thiscall HandValueCalculator::a(void)" (?a@HandValueCalculator@@QAEXXZ) referenced in function "void __cdecl Test(void)" (?Test@@YAXXZ)

您的HandValueCalculator没有可用于链接器的void a();实现。如果定义了a函数,请确保链接到包含该定义的对象文件。

但是,您很可能是最令人烦恼的解析的受害者,并认为您已将a声明为变量(未显示的某处(,但您却声明了一个函数(没有定义(。

相关文章: