Fehler: Undefinierte Symbole beim Kompilieren mit statischer Bibliothek
Beim Kompilieren von C-Code in XCode kann die Fehlermeldung „Undefinierte Symbole für“ auftreten Architektur i386. Dieser Fehler tritt typischerweise aufgrund undefinierter statischer Variablen im Code auf.
Problemdetails
Im bereitgestellten Code hat die Klasse Log eine statische Variable theString im Header deklariert Datei Log.h, ist aber nicht in der Implementierungsdatei Log.cpp definiert. Dies führt dazu, dass der Linker den Verweis auf die Variable während der Kompilierung nicht auflösen kann.
Lösung
Um diesen Fehler zu beheben, müssen Sie die statische Variable in der Implementierung definieren Datei.
// Log.cpp #include "Log.h" #include <iostream> string Log::theString; // Define static here void Log::method(string arg) { theString = "hola"; cout << theString << endl; }
Zusätzliche Empfehlung
Es wird auch empfohlen, die zu entfernen Zeile mit Namespace std; aus der Header-Datei, da es den globalen Namespace überall dort, wo der Header enthalten ist, mit std verunreinigt. Stattdessen sollten Sie den std-Namespace explizit angeben, wenn Sie seine Objekte verwenden.
// Log.h #include <iostream> #include <string> class Log { public: static void method(std::string arg); private: static std::string theString; };
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „Undefinierte Symbole für Architektur i386', wenn ich statische Variablen in C verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!