使用靜態函式庫編譯時出現錯誤:未定義的符號
在XCode 中編譯C 程式碼時,可能會遇到錯誤訊息「Undefined Symbols for架構i386。」此錯誤通常是由於程式碼中未定義的靜態變數而發生。
問題詳細資訊
在提供的程式碼中,類別Log 有一個在標頭中宣告的靜態變數theString檔案Log.h但未在實作檔案Log .cpp中定義。這會導致連結器在編譯期間無法解析對變數的參考。
解
要解決此錯誤,必須在實作中定義靜態變數檔。
// Log.cpp #include "Log.h" #include <iostream> string Log::theString; // Define static here void Log::method(string arg) { theString = "hola"; cout << theString << endl; }
附加建議
也建議刪除using namespace std這行;從頭檔案中刪除,因為它會在包含頭檔的地方用std 污染全域命名空間。相反,您應該在使用其物件時明確指定 std 命名空間。
// Log.h #include <iostream> #include <string> class Log { public: static void method(std::string arg); private: static std::string theString; };
以上是在 C 中使用靜態變數時,為什麼我會收到「架構 i386 的未定義符號」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!