C 11 ライブラリ用に設定されていない C 11 ライブラリを使用する開発者は、変換に関連するリンカー エラーが発生する可能性があります。 std::__cxx11::string と std::string の間。キャストを試行しても、この変換は失敗したままです。
さらなる調査により、GCC 5 の潜在的な問題が明らかになりました。GCC 5 リリース ノートによると、このようなリンカー エラーは、異なる _GLIBCXX_USE_CXX11_ABI マクロ値でコンパイルされたオブジェクト ファイルの使用を示している可能性があります。 。これは、以前の GCC バージョンでコンパイルされたサードパーティ ライブラリにリンクするときによく発生します。
この問題を解決するには、開発者は標準ライブラリ ヘッダーを含める前に _GLIBCXX_USE_CXX11_ABI マクロを 0 に再定義できます。これにより、リンカー エラーが修正されます。
#define _GLIBCXX_USE_CXX11_ABI 0 #include <standard_library_headers.h>
このアプローチに従うことで、開発者は、C 11 に準拠していないライブラリを使用している場合でも、std::__cxx11::string と std::string の間で正常に変換できます。
以上がstd::__cxx11::string と std::string の変換の不一致によって引き起こされるリンカー エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。