ホームページ >バックエンド開発 >C++ >GCC 6.0 で Experimental::filesystem ライブラリを使用するとリンカー エラーが発生するのはなぜですか?

GCC 6.0 で Experimental::filesystem ライブラリを使用するとリンカー エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-15 10:41:021047ブラウズ

Why am I getting linker errors when using the experimental::filesystem library in GCC 6.0?

experimental::filesystem でのリンカー エラー

GCC 6.0 の Experimental::filesystem ライブラリを使用して C 1z 機能を実装しようとすると、ユーザーはリンカエラーが発生する可能性があります。エラー メッセージは、std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts().

Reason:

への未定義の参照を示しています。ファイルシステム TS は C 1z の一部ではなく、別の仕様です。このライブラリの GCC 実装は C 11 モードで利用できます。

解決策:

この問題を解決するには、-lstdc fs とリンクします。 libstdc fs.a ライブラリは、リンカ コマンド内でそれに依存するオブジェクトの後に来る必要があります。

更新:

  • 2017 年 11 月: GCC 8.x は、std::filesystem 名前空間に C 17 ファイルシステム ライブラリを実装しました。このライブラリは、-std=gnu 17 または -std=c 17 で使用できますが、-lstdc fs とのリンクが必要です。
  • 2019 年 1 月: GCC 9 以降では、std の使用が許可されています。 :filesystem コンポーネント (-lstdc fs なし)。
  • 4 月2024: GCC 13.3 は std::experimental::filesystem シンボルを -lstdc exp.
に追加しました。

以上がGCC 6.0 で Experimental::filesystem ライブラリを使用するとリンカー エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。