简单程序获取 LNK2019: unresolved external symbol Visual Studio 2013

Simple program gets LNK2019: unresolved external symbol Visual Studio 2013

几天来我一直在为一个更复杂的解决方案解决这个错误而苦苦挣扎,所以我简化了一个测试项目,看看我是否无法解决它仍然得到同样的错误:

1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>  Test.cpp
1>  MainThing.cpp
1>  main.cpp
1>  Generating Code...
1>MainThing.obj : error LNK2019: unresolved external symbol "public: static int __cdecl Test::add(int)" (?add@Test@@SAHH@Z) referenced in function "public: void __thiscall MainThing::run(void)" (?run@MainThing@@QAEXXZ)
1>P:\Leif's Documents\Visual Studio 2013\Projects\test\Debug\test.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

MainThing.h

#pragma once
class MainThing
{
public:
    MainThing();
    ~MainThing();

    void run();

private:
    int result;
};

MainThing.cpp

#include "MainThing.h"
#include "Test.h"

#include <cstdlib>

#include <iostream>

MainThing::MainThing()
{
}


MainThing::~MainThing()
{
}

void MainThing::run() {
    int result = Test::add(5);
    std::cout << result;
}

Test.h

#pragma once
class Test
{
public:
    static int add(int a);
};

Test.cpp

#include "Test.h"

int add(int a){
    int b = a;
    int c = 5;
    int d = b + c;

    return d;
}

main.cpp

#include <iostream>
#include "MainThing.h"

int main(int argc, char** argv){
    MainThing mainGame;
    mainGame.run();

    return 0;
}

这非常令人沮丧,而且它甚至可以在没有任何外部依赖性的情况下实现相当简单的娱乐测试,这一事实使它更加令人沮丧。

我想你只是打错了字。 Test.cpp 应该是

#include "Test.h"

int Test::add(int a){
    int b = a;
    int c = 5;
    int d = b + c;

    return d;
}

按照您的方式,您编写了一个免费函数,Test.cpp 中的其他东西可以使用,但没有其他人知道。编译器正在寻找名为 add 的测试方法,但没有找到。