Wenn Sie versuchen, die neuesten C 1z-Funktionen mit GCC 6.0 zu nutzen, insbesondere mit der „experimental::filesystem“-Bibliothek, kann dies der Fall sein Es tritt ein Linker-Fehler wie dieser auf:
undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
Es ist wichtig zu beachten, dass das Dateisystem TS (Technische Spezifikation) nicht Teil von C 1z ist ( jetzt C 20) Standard. Daher hängt der Fehler nicht mit der C 1z-Unterstützung zusammen, sondern mit der Verknüpfung mit der entsprechenden Bibliothek.
Um das Problem zu beheben, verknüpfen Sie Ihren Code mit der statischen Bibliothek – lstdc fs. Dadurch wird die notwendige Implementierung für die experimentell::filesystem-Funktionen bereitgestellt. Denken Sie daran, es im Linker-Befehl nach allen Objekten zu platzieren, die davon abhängen.
November 2017:
GCC 8.x führt eine C 17-kompatible Dateisystembibliothek unter dem Namensraum std::filesystem ein. Für die Verwendung sind sowohl -std=gnu 17 als auch -lstdc fs erforderlich.
Januar 2019:
GCC 9 ermöglicht die Verwendung von std::filesystem-Komponenten ohne -lstdc fs.
April 2024:
GCC 13.3 präsentiert neben anderen experimentellen Definitionen auch experimentelle::Dateisystemsymbole in -lstdc exp.
Das obige ist der detaillierte Inhalt vonWie behebe ich Linker-Fehler bei der Verwendung von „experimental::filesystem' in GCC?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!