首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >目标文件中未解析的外部符号

目标文件中未解析的外部符号
EN

Stack Overflow用户
提问于 2012-03-29 23:11:29
回答 24查看 589.6K关注 0票数 208

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

代码语言:javascript
复制
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
EN

回答 24

Stack Overflow用户

发布于 2012-03-29 23:15:18

检查您正在引用的解决方案中是否包含所有源文件。

如果您没有在项目中包含类Field的源文件(以及实现),那么它将不会被构建,并且在编译期间将无法链接。

或者,也许您正在使用静态或动态库,并且忘记告诉链接器有关.lib的情况?

票数 29
EN

Stack Overflow用户

发布于 2015-09-14 21:40:28

我刚刚看到了一个问题,我不能在.cpp文件中调用main中的函数,在.h文件中正确声明,在.c文件中定义。遇到链接器错误。同时,我可以从通常的.c文件中调用函数。这可能取决于调用约定。解决方案是在每个.h文件中添加以下preproc行:

代码语言:javascript
复制
#ifdef __cplusplus
extern "C"
{
#endif

最后是这些

代码语言:javascript
复制
#ifdef __cplusplus
}
#endif
票数 10
EN

Stack Overflow用户

发布于 2016-10-08 20:41:45

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9928238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档