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