C++ 中的未定義引用/未解析外部符號錯誤是什麼?
顧名思義,您宣告的符號未被您定義。這可能是由於多種情況造成的。讓我們看一下其中的三種:
您忘記定義宣告的名稱。例如,您在一個檔案中聲明瞭一個函式並在某處使用了它。但是您沒有提供它的定義。程式碼:
#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
廣告