在Visual Studio中编码时,我得到了一个未解决的外部符号错误 我不知道该怎么办我不知道怎么了。 你能帮我破译一下吗?我应该在哪里寻找什么样的错误?

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@std@@V?$allocator@D@2@@std@@@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@std@@V?$allocator@D@2@@std@@@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@std@@V?$allocator@D@2@@std@@@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@std@@V?$allocator@D@2@@std@@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@std@@V?$allocator@D@2@@std@@XZ)
1>Form.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Field::describe(void)" (?describe@Field@@UAEXXZ)
1>C:\Users\tomy\Documents\Visual Studio 2010\Projects\zapoctovkac++\Debug\zapoctovkac++.exe : fatal error LNK1120: 6 unresolved externals

当前回答

请参阅MSDN上的链接器工具错误LNK2019,它有导致LNK2019的常见问题的详细列表。

其他回答

我有一个错误,我的项目被编译为x64项目。我使用的库是x86编译的。

我重新编译了x64库,它解决了这个问题。

导致此链接器错误的一个可能原因还可能是在头文件中声明但没有定义的内联函数,该头文件随后包含在其他地方。内联函数必须在使用它们的每个翻译单元中定义。

还有一个可能的问题(我只是抓了一段时间):

如果将函数定义为内联的,那么它们——当然!-必须在头文件(或内联文件)中定义,而不是在cpp中定义。 在我的例子中,它们在一个内联文件中,但这只是因为它们是一个特定于平台的实现,并且cpp包含了这个相应的内联文件……而不是一个头文件。是啊,真他妈倒霉。

我想我应该把这个也放在这里,也许其他人遇到了同样的问题,并在这里找到了它。

我只是一时难以接受。一切都是有逻辑的。我声明了一个构造函数,但没有定义它

class SomeClass
{
   SomeClass();  // needs the SomeClass::SomeClass(){} function defined somewhere, even here
}

当我忘记这么基本的东西时,我的头差点撞到键盘上。

我有同样的链接错误,但从一个测试项目引用另一个dll。发现在错误消息中指定的每个函数前面添加_declspec(dllexport)后,链接正常工作。