什么是 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
广告