問題描述
在 Visual Studio 中編碼期間,我遇到了一個未解決的外部符號錯誤我不知道該怎么辦.我不知道怎么了.你能解密我嗎?我應該在哪里尋找什么樣的錯誤?
During coding in Visual Studio I got an unresolved external symbol error and I've got no idea what to do. I don't know what's wrong. Could you please decipher me? Where should I be looking for what kind of errors?
1>Form.obj : error LNK2019: unresolved external symbol "public: class Field * __thiscall Field::addField(class Field *)" (?addField@Field@@QAEPAV1@PAV1@@Z) referenced in function "public: void __thiscall Form::parse(class std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?parse@Form@@QAEXAAV?$basic_stringstream@DU?$char_traits@D@V?$allocator@D@@Z)
1>Form.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall Field::parse(class std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?parse@Field@@UAEXAAV?$basic_stringstream@DU?$char_traits@D@V?$allocator@D@@Z) referenced in function "public: __thiscall InputField::InputField(class std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> > &)" (??0InputField@@QAE@AAV?$basic_stringstream@DU?$char_traits@D@V?$allocator@D@@Z)
1>Form.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Field::prompt(void)" (?prompt@Field@@UAEXXZ)
1>Form.obj : error LNK2001: unresolved external symbol "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall Field::getName(void)" (?getName@Field@@UAE?AV?$basic_string@DU?$char_traits@D@V?$allocator@D@XZ)
1>Form.obj : error LNK2001: unresolved external symbol "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall Field::getType(void)" (?getType@Field@@UAE?AV?$basic_string@DU?$char_traits@D@V?$allocator@D@XZ)
1>Form.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Field::describe(void)" (?describe@Field@@UAEXXZ)
1>C:Users omyDocumentsVisual Studio 2010Projectszapoctovkac++Debugzapoctovkac++.exe : fatal error LNK1120: 6 unresolved externals
推薦答案
這個錯誤通常意味著某些函數有聲明,但沒有定義.
This error often means that some function has a declaration, but not a definition.
示例:
// A.hpp
class A
{
public:
void myFunc(); // Function declaration
};
// A.cpp
// Function definition
void A::myFunc()
{
// do stuff
}
在您的情況下,無法找到定義.問題可能是您包含了一個頭文件,它引入了一些函數聲明,但您要么:
In your case, the definition cannot be found. The issue could be that you are including a header file, which brings in some function declarations, but you either:
- 不要在您的 cpp 文件中定義函數(如果您自己編寫此代碼)
- 不要包含包含定義的 lib/dll 文件
一個常見的錯誤是你將一個函數定義為一個獨立的函數而忘記了類選擇器,例如A::
,在你的 .cpp 文件中:
A common mistake is that you define a function as a standalone and forget the class selector, e.g. A::
, in your .cpp file:
錯誤: void myFunc() {/* do stuff *