2015-12-14 23 views
0

我一直在爲一個更復雜的解決方案上的這個錯誤掙扎幾天,所以我簡化了一個測試項目,看看我是否無法弄清楚,它仍然得到相同的錯誤:簡單的程序獲取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; 
} 

這一直是超級沮喪,事實上,它甚至影響一個相當簡單的娛樂測試,無需任何外部依賴關係使得它更加如此。

+0

你已經聲明瞭一個成員函數'Test :: add',但是你還沒有定義它。你已經定義了一個獨立的非成員函數':: add',但你永遠不會調用它。 –

回答

1

我想你只是有一個錯字。 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的Test方法,但找不到它。

+1

我剛剛意識到,在我檢查這裏之前,以及...我更復雜的程序中的所有問題都消失了... – LMP3D

相關問題