Heim > Backend-Entwicklung > C++ > Warum erzeugt mein Cross-Compiler einen „undefinierten Verweis auf „WindowsTimer::_frequenz'' und wie kann ich das beheben?

Warum erzeugt mein Cross-Compiler einen „undefinierten Verweis auf „WindowsTimer::_frequenz'' und wie kann ich das beheben?

Barbara Streisand
Freigeben: 2024-12-18 21:18:12
Original
632 Leute haben es durchsucht

Why Does My Cross Compiler Produce

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'
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage