我一直在爲一個更復雜的解決方案上的這個錯誤掙扎幾天,所以我簡化了一個測試項目,看看我是否無法弄清楚,它仍然得到相同的錯誤:簡單的程序獲取LNK2019:無法解析的外部符號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)" ([email protected]@@[email protected]) referenced in function "public: void __thiscall MainThing::run(void)" ([email protected]@@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;
}
Ť est.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 :: add',但是你還沒有定義它。你已經定義了一個獨立的非成員函數':: add',但你永遠不會調用它。 –