交叉編譯中對靜態成員的未解析引用
使用交叉編譯器時,經常會遇到與未解析的靜態引用相關的錯誤成員。當在類別頭中聲明靜態變數但未在對應的 .cpp 檔案中定義時,就會發生這種情況。
問題說明:
考慮提供的程式碼範例:
class WindowsTimer { public: WindowsTimer() { _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; };
靜態變數 _Frequency 在類別定義中宣告但未定義。嘗試建立程式碼時,連結器無法解析對 _Frequency 的引用,導致未定義的引用錯誤。
解:
要解決此問題,靜態變數必須在對應的.cpp 檔案中定義。這可以如下完成:
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
推理:
靜態變數與實例變數不同,在類別的所有實例之間共用。因此,它們需要在程序中進行單一定義。透過在 .cpp 檔案中定義靜態變量,連結器可以成功定位並解析對其的引用。
附加說明:
以上是為什麼在交叉編譯過程中出現「未定義的靜態成員引用」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!