首頁 >後端開發 >C++ >為什麼我的 C 連結器會拋出'未定義的引用”錯誤?

為什麼我的 C 連結器會拋出'未定義的引用”錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-22 03:40:11347瀏覽

Why Are My C   Linker Throwing

未定義的引用錯誤:理解原因

配置C 項目時,連結器偶爾會拋出令人費解的錯誤,例如「對XXX 的vtable 的未定義引用”或“未定義引用”到類別名稱::類別名稱()。 「這些錯誤主要表示源自虛擬函數和繼承的問題。

重寫虛擬函數

當子類別聲明重寫的虛函數而不提供定義時,通常會出現問題。考慮以下程式碼片段:

class Base { public: virtual void f() = 0; };
class Derived : public Base { public: void f(); };

在此範例中,子類別Derived 宣告了一個重寫函數f()但未定義它。 >

檢查庫架構:

要驗證您連結到的靜態庫是否是64 位,請參閱庫的文檔或使用file指令檢查庫檔案:

  1. 確認類別存在:

    要確保庫包含預期的類別和方法,請使用 nm 指令:
    file /path/to/library.a
  2. 解決問題

    至解決鏈接器錯誤並成功完成鏈接過程,提供子類中任何聲明的虛擬函數的定義,並確保相關庫正確包含在鏈接步驟中。

以上是為什麼我的 C 連結器會拋出'未定義的引用”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn