首頁 >後端開發 >C++ >為什麼我的交叉編譯器會產生'對'WindowsTimer::_Frequency'的未定義引用”以及如何修復它?

為什麼我的交叉編譯器會產生'對'WindowsTimer::_Frequency'的未定義引用”以及如何修復它?

Barbara Streisand
Barbara Streisand原創
2024-12-18 21:18:12635瀏覽

Why Does My Cross Compiler Produce

對靜態成員的未定義引用

在提供的程式碼片段中,在WindowsTimer 類別中定義了一個靜態成員變數_Frequency 。但是,當嘗試使用交叉編譯器編譯程式碼時,會出現以下錯誤:

undefined reference to `WindowsTimer::_frequency'

此錯誤表示連結器在連結過程中無法找到靜態成員變數的定義。原因是靜態成員變數不會被編譯器自動初始化,它們的定義必須在原始檔中明確提供。

解決方案:

到要解決此錯誤,需要在程式的來源檔案之一中提供靜態成員變數 _Frequency 的定義。這可以透過將以下行加入.cpp 檔案:

LARGE_INTEGER WindowsTimer::_frequency;

透過提供靜態成員變數的定義,連結器可以在連結期間成功解析對其的引用,並且編譯錯誤將會得到解決。

要注意的是,之前嘗試使用_Frequency.QuadPart = 0ull 或static 來修改類別聲明中_Frequency 的定義LARGE_INTEGER _Frequency.QuadPart = 0ull 無法解決問題,因為編譯器仍然需要在類別定義之外顯式定義靜態成員變數。

以上是為什麼我的交叉編譯器會產生'對'WindowsTimer::_Frequency'的未定義引用”以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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