Nov*_*tor 170 c++ unresolved-external visual-studio visual-c++
在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
Run Code Online (Sandbox Code Playgroud)
Chr*_*ris 289
此错误通常意味着某些函数具有声明,但不具有定义.
例:
// A.hpp
class A
{
public:
void myFunc(); // Function declaration
};
// A.cpp
// Function definition
void A::myFunc()
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,无法找到定义.问题可能是你要包含一个头文件,它引入了一些函数声明,但你要么:
一个常见的错误是您将函数定义为独立函数并忘记了类选择器,例如A::
,在.cpp文件中:
错了: void myFunc() { /* do stuff */ }
对: void A::myFunc() { /* do stuff */ }
Kon*_*rad 24
检查您是否包含解决方案中要引用的所有源文件.
如果您没有Field
在项目中包含该类的源文件(以及实现),则它将不会构建,并且您将无法在编译期间进行链接.
或者,也许您正在使用静态或动态库并忘记告诉链接器.lib
s?
Fyl*_*lix 11
它看起来缺少一个库或包含,您可以尝试找出具有getName,getType等的库的类,并将其放在头文件中或使用#include
.
此外,如果这些恰好来自外部库,请确保在项目文件中引用它们.例如,如果此类属于abc.lib,则在Visual Studio中
小智 7
我刚刚看到问题,我无法从.cpp文件中的main调用函数,在.h文件中正确声明并在.c文件中定义.遇到链接器错误.同时我可以从通常的.c文件中调用函数.可能这取决于电话会议.解决方案是在每个.h文件中添加以下预处理行:
#ifdef __cplusplus
extern "C"
{
#endif
Run Code Online (Sandbox Code Playgroud)
最后这些
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
小智 6
此错误可能是由于将模板类的函数定义放在单独的 .cpp 文件中而导致的。对于模板类,必须在头文件中声明成员函数。您可以通过在 .h 文件中内联或在类定义之后定义成员函数来解决该问题。
例如,您可以像这样内联定义它们,而不是像其他类那样将函数定义放在 .cpp 文件中:
template<typename T>
MyClassName {
void someFunction() {
// Do something
...
}
void anotherFunction() {
// Do something else
...
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以在类定义之后但在同一个文件中定义它们,如下所示:
template<typename T>
MyClassName {
void someFunction();
void anotherFunction();
}
void MyClassName::someFunction() {
// Do something
...
}
void MyClassName::anotherFunction() {
// Do something else
...
}
Run Code Online (Sandbox Code Playgroud)
我只是想分享这一点,因为似乎没有人提到模板类。这就是我的案例中错误的原因。
小智 5
有时,如果添加了新的头文件,并且因此开始出现此错误,您还需要添加库以摆脱unresolved external symbol
.
例如:
#include WtsApi32.h
Run Code Online (Sandbox Code Playgroud)
将需要:
#pragma comment(lib, "Wtsapi32.lib")
Run Code Online (Sandbox Code Playgroud)
还有另一个可能的问题(我只是挠头了一段时间):
\n\n如果您将函数定义为,那么它们 \xe2\x80\x94 当然!\xe2\x80\x94 必须在标头(或内联文件)inline
中定义,而不是cpp。\n就我而言,它们位于内联文件中,但这只是因为它们是特定于平台的实现,并且 cpp包含此相应的inl
文件\xe2\x80\xa6 而不是标头。是的,事情发生了。
我想我也应该把它留在这里,也许其他人遇到同样的问题并在这里找到它。
\n 归档时间: |
|
查看次数: |
470512 次 |
最近记录: |