我看过别人对这个问题的解决方案,不幸的是,他们都没有解决我的问题。我在我的开发项目中遇到了这个错误,所以我从头开始,跟着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());
}
};
}
由于某些原因,链接器无法找到我的定义,而且我也不知道为什么会这样。