2017-08-08 59 views
0

今天我下載的Visual Studio的新版本,我試圖建立一個類:「無法解析的外部...」當試圖建立一個類CPP

class Fraction 
{ 
public: 
    Fraction(int, int); 


private: 
    int _a; 
    int _b; 
}; 

我還內置了CPP文件執行:

#pragma once 
#include "Fraction.h" 
#include <string> 



Fraction::Fraction(int a, int b) 
{ 
    _a = a; 
    _b = b; 
} 

頭文件(thc類)位於名爲「Franctions.h」的文件中,並在頭文件目錄中找到。 cpp文件(thc類)位於名爲「Franctions.cpp」的文件中,可在Resource files目錄中找到。

當我試着運行這個簡單的程序,我得到這個問題: 嚴重性代碼說明項目文件的線路抑制狀態

Error LNK2019 unresolved external symbol "public: __thiscall Fraction::Fraction(int,int)" ([email protected]@[email protected]@Z) referenced in function _main Homework2 c:\Users\VVV\documents\visual studio 2017\Projects\Homework2\Homework2\questionA.obj 1 

爲什麼它是這樣嗎?

編輯: 主:

#include "Fraction.h" 

int main() 
{ 
    Fraction f1(1, 2); 
    return 0; 

} 
+6

CPP文件屬於源文件,而不是資源文件。將其移至源文件夾並查看會發生什麼。另外'#pragma once'應該在頭文件中,而不是源文件中。 – NathanOliver

+0

@NathanOliver仍然是同樣的問題 –

+2

LNK2019是鏈接器錯誤,所以在您的項目配置中可能有些問題。你在哪裏有'main()'函數和其他源文件的文件?它們和'Fractions.cpp'是否在同一個目錄下?似乎從你使用Fraction類的地方只有頭文件是可見的。 – trivelt

回答

0

問題是不是你的Fractions.h或Fractions.cpp內,而是與questionA.cpp注意,找不到錯誤的符號引用文件:

c:\Users\VVV\documents\visual studio 2017\Projects\Homework2\Homework2\questionA.obj 

#include "Fractions.h"在那個文件中?

+0

當然......還有聲明...... :( –

+0

@efwef看來你的解決方案有問題,你可以截取你的「解決方案資源管理器」當我看到Fractions.h,Fractions.cpp和questionA.cpp? –

-2

這個錯誤意味着編譯器找不到這個函數。 在包含路徑中寫入特定位置並查看它是否能解決您的問題。 如果是這樣,它意味着您的頭文件正在查看不同於您認爲的目錄。

+0

這是錯誤的,一個未解決的符號表示頭或其他令人滿意的聲明存在,並根據所述聲明正確調用該函數,但包含聲明符號的源文件或庫未鏈接。如果缺少頭文件,將會打印完全不同的錯誤,如'未聲明分數'。 –