什麼是 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

更新於: 2020-06-23

1000+ 瀏覽量

開啟你的 職業

完成課程獲得認證

開始
廣告
© . All rights reserved.