C++ 函数中引用的未解析外部符号错误

C++ 函数中引用的未解析外部符号错误,c++,visual-studio,C++,Visual Studio,我看过其他人对这个问题的解决方案,但不幸的是,他们都没有解决我的问题。我在我的开发项目中遇到了这个错误,所以我从零开始,一字不差地写,包括文件名和位置,我仍然得到了帮助 1> unittest1.obj:错误LNK2019:未解析的外部符号“公共: 静态int\uu cdecl HelloWorld::getTwo(void)” (?getTwo@HelloWorld@@SAHXZ)在函数“public:void”中引用 __此调用UnitTest1::UnitTest1::TestMethod

我看过其他人对这个问题的解决方案,但不幸的是,他们都没有解决我的问题。我在我的开发项目中遇到了这个错误,所以我从零开始,一字不差地写,包括文件名和位置,我仍然得到了帮助

1> unittest1.obj:错误LNK2019:未解析的外部符号“公共: 静态int\uu cdecl HelloWorld::getTwo(void)” (?getTwo@HelloWorld@@SAHXZ)在函数“public:void”中引用 __此调用UnitTest1::UnitTest1::TestMethodGetTwo(void)“(?)?TestMethodGetTwo@UnitTest1@1@QAEXXZ)

1> unittest1.obj:错误 LNK2019:未解析的外部符号“public:int\u thiscall” HelloWorld::getN(void)const“(?)?getN@HelloWorld@@QBEHXZ)中引用 函数“public:void\u thiscall” UnitTest1::UnitTest1::TestMethodGetN(无效)” (?TestMethodGetN@UnitTest1@1@QAEXXZ)

代码在我链接的教程中,但我将在下面复制它。我不明白在这一点上我可能做错了什么-我的测试项目取决于我的构建项目,我对这些函数的定义在类中

HelloWorld.h

#pragma once
class HelloWorld
{
    int n = 10;
public:
    static int getTwo();
    int getN() const;
};
HelloWorld.cpp

#include "stdafx.h"
#include "HelloWorld.h"

int main()
{
    return 0;
}

int HelloWorld::getTwo()
{
    return 2;
}

int HelloWorld::getN() const
{
    return n;
}
unittest1.cpp(在测试项目中)


由于某种原因,链接器找不到我的定义,我不知道为什么会这样。

在哪里定义了
getTwo
?在HelloWorld.cpp:int HelloWorld::getTwo(){return 2;}中,如果让我猜的话,我会说您错过了教程中的项目依赖项部分。链接器不需要定义,它需要对象文件,这样它就可以链接到函数的编译版本。哦,伙计,你说得对,我确实读错了。我没有添加单独的cpp和h文件,因为我(错误地)认为将它们添加为构建依赖项可以做到这一点。谢谢,这就解决了!在哪里定义了
getTwo
?在HelloWorld.cpp:int HelloWorld::getTwo(){return 2;}中,如果让我猜的话,我会说您错过了教程中的项目依赖项部分。链接器不需要定义,它需要对象文件,这样它就可以链接到函数的编译版本。哦,伙计,你说得对,我确实读错了。我没有添加单独的cpp和h文件,因为我(错误地)认为将它们添加为构建依赖项可以做到这一点。谢谢,这就解决了!
#include "stdafx.h"
#include "CppUnitTest.h"
#include "../HelloWorld/HelloWorld.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethodGetTwo)
        {
            Assert::AreEqual(2, HelloWorld::getTwo());
        }

        TEST_METHOD(TestMethodGetN)
        {
            HelloWorld hw = HelloWorld();
            Assert::AreNotEqual(0, hw.getN());
        }
    };
}