温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c++ - Converting std::__cxx11::string to std::string
c++ c++11 std string types

c++ - 将std :: __ cxx11 :: string转换为std :: string

发布于 2020-03-27 11:10:26

我使用c ++ 11,但也使用一些未配置的库,并且需要某种类型转换。特别是,我需要一种转换std::__cxx11::string为常规的方法std::string,但是谷歌搜索找不到这样做的方法,因此放在(string)前面是行不通的。

如果不进行转换,则会出现如下链接错误:

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'

查看更多

查看更多

提问者
jorgen
被浏览
235
Matthäus Brandl 2015-10-28 23:52

您是否可能正在使用GCC 5?

如果您收到有关未定义引用的链接器错误,这些符号涉及std :: __ cxx11命名空间或标记[abi:cxx11]中的类型,则可能表明您正在尝试将使用_GLIBCXX_USE_CXX11_ABI的不同值编译的目标文件链接在一起宏 当链接到使用旧版GCC编译的第三方库时,通常会发生这种情况。如果无法使用新的ABI重建第三方库,则需要使用旧的ABI重新编译代码。

资料来源:GCC 5发行说明/双重ABI

包括任何标准库头之前定义以下宏应该可以解决您的问题:#define _GLIBCXX_USE_CXX11_ABI 0