GCC 6.0 で最新の C 1z 機能、特に Experimental::filesystem ライブラリを利用しようとする場合、次のことが考えられます。次のようなリンカ エラーが発生します:
undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
ファイルシステム TS (技術仕様) は C 1z (現在の C 20) 標準の一部ではないことに注意することが重要です。したがって、このエラーは C 1z サポートに関連するものではなく、適切なライブラリとのリンクに関連しています。
この問題を解決するには、コードを静的ライブラリにリンクしてください - lstdc fs.これにより、experimental::filesystem 機能に必要な実装が提供されます。リンカー コマンド内で、これに依存するオブジェクトの後に忘れずに配置してください。
2017 年 11 月:
GCC 8.x名前空間 std::filesystem の下に C 17 準拠のファイルシステム ライブラリを導入します。使用するには、-std=gnu 17 と -lstdc fs の両方が必要です。
2019 年 1 月:
GCC 9 では、-lstdc fs なしで std::filesystem コンポーネントを使用できます。
4月2024:
GCC 13.3 は、他の実験的な定義とともに、-lstdc exp で実験的::ファイルシステム シンボルを提示します。
以上がGCC で `experimental::filesystem` を使用する場合のリンカー エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。