Heim >Backend-Entwicklung >C++ >Warum verursachen C-Vorlagen Linkerfehler vom Typ „Unaufgelöstes externes Symbol'?

Warum verursachen C-Vorlagen Linkerfehler vom Typ „Unaufgelöstes externes Symbol'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 13:04:41841Durchsuche

Why Do C   Templates Cause

Warum verursachen Vorlagen „Unaufgelöste externe Symbol“-Fehler?

Bei der Entwicklung von C-Code mit Vorlagen kommt es beim Verknüpfen häufig zu „unaufgelösten externen Symbol“-Fehlern. Dieses Problem entsteht, weil auf Vorlagen basierende Klassen und Funktionen erst dann instanziiert werden, wenn sie verwendet werden, normalerweise in einer separaten Quelldatei (.cpp).

Wenn eine Vorlage verwendet wird, fordert der Compiler den vollständigen Code für die Erstellung dieser Funktion an die richtige Funktion mit dem passenden Typ. Der Code der Funktion ist jedoch in der Quelldatei der Vorlage enthalten und daher nicht verfügbar.

Folglich geht der Compiler davon aus, dass die Funktion an anderer Stelle angegeben ist und schließt nur ihren Aufruf ein. Wenn die Quelldatei der Vorlage kompiliert wird, wird der spezifische Vorlagentyp aus der Programmquelle nicht verwendet und daher kann der wesentliche Funktionscode nicht generiert werden. Dies führt zu einem ungelösten externen Symbolfehler.

So lösen Sie das Problem:

  1. Fügen Sie die Member-Funktionsdefinition in den Header der Vorlage ein: Definieren Sie die Member-Funktion in der Header-Datei der Vorlage, anstatt eine separate Quelldatei zu erstellen. Dadurch erhält der Compiler Zugriff auf den vollständigen Code für die Funktion während der Kompilierung der typisierten Funktion in der Programmquelle.
  2. Inline aller Mitgliedsfunktionen in der Quelle der Vorlage: Dies ist nicht mehr der Fall empfohlen für moderne Versionen von Visual Studio (2017).
  3. Verwenden Sie das Schlüsselwort „export“ in den Vorlagen Quelle: Definieren Sie die Mitgliedsfunktionen in der Quelle der Vorlage mit dem Schlüsselwort „export“. Dieser Ansatz wird jedoch von Compilern nicht allgemein unterstützt und ist in C 11 veraltet.

Das obige ist der detaillierte Inhalt vonWarum verursachen C-Vorlagen Linkerfehler vom Typ „Unaufgelöstes externes Symbol'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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