ホームページ >バックエンド開発 >C++ >C での std::__cxx11::string から std::string への変換の問題を解決する方法

C での std::__cxx11::string から std::string への変換の問題を解決する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-28 00:50:17737ブラウズ

How to Resolve std::__cxx11::string to std::string Conversion Issues in C  ?

std::__cxx11::string から std::string への変換

C 11 では、ライブラリは std::__cxx11 を提供します。標準の std::string とは異なる :string 型。 C 11 をサポートしていない可能性がある外部ライブラリとの互換性を実現するには、これら 2 つの文字列型の間で変換する必要があります。

表示されたエラー メッセージによると、リンカーは std::__cxx11 に関連する参照を解決できません。 :弦。考えられる原因の 1 つは、不正な _GLIBCXX_USE_CXX11_ABI マクロの使用です。

解決策:

この問題を解決するには、ユーザーが GCC 5 以降を使用しているかどうかを確認する必要がある場合があります。 。その場合は、標準ライブラリ ヘッダーを含める前に、_GLIBCXX_USE_CXX11_ABI マクロを 0 に定義する必要があります。これは次のように実行できます。

#define _GLIBCXX_USE_CXX11_ABI 0

このマクロを定義すると、リンカーは古い ABI を使用し、外部ライブラリとの互換性を確保します。その結果、std::__cxx11::string から std::string への変換はシームレスになるはずです。

以上がC での std::__cxx11::string から std::string への変換の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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