Heim >Backend-Entwicklung >C++ >Warum erhalte ich bei der Kreuzkompilierung die Fehlermeldung „Undefinierter Verweis auf statisches Mitglied'?
Ungelöster Verweis auf ein statisches Mitglied in der Cross-Compilierung
Bei der Arbeit mit Cross-Compilern kommt es häufig zu Fehlern im Zusammenhang mit ungelösten Verweisen auf statisches Element Mitglieder. Dies tritt auf, wenn eine statische Variable in einem Klassenheader deklariert, aber nicht in der entsprechenden CPP-Datei definiert ist.
Problemerklärung:
Bedenken Sie das bereitgestellte Codebeispiel:
class WindowsTimer { public: WindowsTimer() { _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; };
Die statische Variable _frequenz wird innerhalb der Klassendefinition deklariert, ist aber nicht definiert. Beim Versuch, den Code zu erstellen, kann der Linker den Verweis auf _frequenz nicht auflösen, was zu einem undefinierten Verweisfehler führt.
Lösung:
Um dieses Problem zu beheben, muss der Die statische Variable muss in der entsprechenden CPP-Datei definiert werden. Dies kann wie folgt erfolgen:
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
Begründung:
Statische Variablen werden im Gegensatz zu Instanzvariablen von allen Instanzen einer Klasse gemeinsam genutzt. Daher erfordern sie eine einzige Definition im Programm. Durch Definieren der statischen Variablen in der .cpp-Datei kann der Linker den Verweis darauf erfolgreich finden und auflösen.
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei der Kreuzkompilierung die Fehlermeldung „Undefinierter Verweis auf statisches Mitglied'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!