In C ist bei Verwendung von C 11 neben Bibliotheken, die nicht für den Standard konfiguriert sind, eine Typkonvertierung erforderlich . Insbesondere ist häufig die Konvertierung von std::__cxx11::string in std::string erforderlich.
Problemstellung:
Zuvor wurde versucht, diese Konvertierung mit Konstrukten wie durchzuführen (string) sind fehlgeschlagen, was zu ähnlichen Linkerfehlern geführt hat zu:
undefined reference to `H5::CompType::insertMember(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, H5::DataType const&) const'
Lösung:
Dieses Problem kann auftreten, wenn GCC 5 verwendet wird und versucht wird, mit unterschiedlichen Werten kompilierte Objektdateien für das Makro _GLIBCXX_USE_CXX11_ABI zu verknüpfen. Um dieses Problem zu beheben, definieren Sie das Makro wie folgt neu:
#define _GLIBCXX_USE_CXX11_ABI 0
Platzieren Sie diese Definition vor der Einbindung von Standardbibliotheksheadern in Ihren Code.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich std::__cxx11::string in std::string in C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!