Undefinierter Verweis auf ein statisches Mitglied
Im bereitgestellten Codeausschnitt ist eine statische Mitgliedsvariable _frequenz innerhalb der WindowsTimer-Klasse definiert. Beim Versuch, den Code mit einem Cross-Compiler zu kompilieren, tritt jedoch der folgende Fehler auf:
undefined reference to `WindowsTimer::_frequency'
Dieser Fehler weist darauf hin, dass der Linker die Definition der statischen Mitgliedsvariablen während der Verknüpfung nicht finden kann. Der Grund dafür ist, dass statische Mitgliedsvariablen nicht automatisch vom Compiler initialisiert werden und ihre Definitionen explizit in einer Quelldatei bereitgestellt werden müssen.
Lösung:
An Um diesen Fehler zu beheben, muss die Definition der statischen Mitgliedsvariablen _frequenz in einer der Quelldateien des Programms bereitgestellt werden. Dies kann durch Hinzufügen der folgenden Zeile zu einer CPP-Datei erfolgen:
LARGE_INTEGER WindowsTimer::_frequency;
Durch die Bereitstellung der Definition der statischen Mitgliedsvariablen kann der Linker den Verweis darauf während der Verknüpfung und den Kompilierungsfehler erfolgreich auflösen wird aufgelöst.
Es ist wichtig zu beachten, dass die vorherigen Versuche, die Definition von _frequenz innerhalb der Klassendeklaration mithilfe von _frequenz.QuadPart = 0ull oder static zu ändern LARGE_INTEGER _frequenz.QuadPart = 0ull hätte das Problem nicht gelöst, da der Compiler immer noch eine explizite Definition der statischen Mitgliedsvariablen außerhalb der Klassendefinition benötigt.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein Cross-Compiler einen „undefinierten Verweis auf „WindowsTimer::_frequenz'' und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!