對靜態成員的未定義引用
在提供的程式碼片段中,在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中文網其他相關文章!