函数错误

时间:2017-05-01 23:36:31

标签: c++ visual-studio

我看过别人对这个问题的解决方案,不幸的是,他们都没有解决我的问题。我在我的开发项目中遇到了这个错误,所以我从头开始,跟着this tutorial跟着这封信,包括文件名和位置,我还是得到了

  

1> unittest1.obj:错误LNK2019:未解析的外部符号“public:   static int __cdecl HelloWorld :: getTwo(void)“   (?getTwo @ HelloWorld @@ SAHXZ)在函数“public:void”中引用   __thiscall UnitTest1 :: UnitTest1 :: TestMethodGetTwo(void)“(?TestMethodGetTwo @ UnitTest1 @ 1 @ QAEXXZ)

     

1> unittest1.obj:错误   LNK2019:未解析的外部符号“public:int __thiscall   HelloWorld :: getN(void)const“(?getN @ HelloWorld @@ QBEHXZ)引用于   功能“public:void __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(在测试项目中)

#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());
        }
    };
}

由于某些原因,链接器无法找到我的定义,而且我也不知道为什么会这样。

0 个答案:

没有答案