什么是 undefined reference/unresolved external symbol 错误?
顾名思义,声明的符号未由你定义。这种情况可能由多个原因引起。让我们看三个原因 −
忘记定义已声明的名称。例如,你在一个文件中声明了一个函数并在其他地方使用了它。但是你没有提供它的定义。代码 −
#include<iostream>
void foo();
int main() {
foo(); // Declared but not defined
}你定义了它但没有使用限定名称。假设你创建一个带有方法的类,并定义了该方法,但忘记使用作用域解析将该函数链接到该定义,并在其他地方使用了该函数。例如,
#include<iostream>
class A {
void foo();
};
void foo() { } // should have used A::foo
int main() {
A a;
a.foo(); // Not defined!
}你未按正确的顺序包含依赖项。链接器尝试按你指定给它的顺序进行链接。因此,如果你在定义之前使用了一个方法,它可能会给出这个问题。
无法创建一个可能导致这个问题的条件的详尽列表。不过,你可以参考这篇文章,里面有一个经过精心整理的可能原因列表 − https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix
广告
数据结构
网络
数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP