目录
1,错误描述
2,解决办法
3,一种特殊情况
1,错误描述
C++程序编译阶段有个常见的错误,std::__cxx11::basic_***,可能是string,list等,也许程序在其他环境完成编译,在运行环境报错,也许是正在编译阶段报错。
简单来说,这个错误的原因是因为C++不同版本对string、list的定义不同。比如Ubuntu环境,如果程序或依赖编译时版本和运行时gcc/g++版本不一致,就会报这个错误。
2,解决办法
- 通过升级或降级编译器版本,使编译环境和运行环境一致。
- 把源码放到实际运行环境重新编译。
- 在cpp文件使用
宏 _GLIBCXX_USE_CXX11_ABI=0,禁用C++11特性
3,一种特殊情况
有时,使用Visual Studio Code编译C++程序,如果task.json文件引用参数配置不正确,也会报这个错误,只需要在配置文件中加入.h文件和.cpp文件路径即可。文章来源:https://www.toymoban.com/news/detail-692883.html
如下,args参数的 “-I”(大写i)部分。文章来源地址https://www.toymoban.com/news/detail-692883.html
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-I","/home/zpl/workspace/NaviCompTest/extinclude",
"/home/zpl/workspace/NaviCompTest/src/Utils.cpp",
"/home/zpl/workspace/NaviCompTest/src/ProcessDataNew.cpp",
"/home/zpl/workspace/NaviCompTest/src/jsoncpp.cpp",
"-fdiagnostics-color=always",
"-L","/home/zpl/workspace/NaviCompTest/bin",
"-lpie-guidance",
"-lpie-poi-search",
"-lpie-routing",
"-std=c++11", // 添加C++11标志
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
到了这里,关于C++ 编译错误std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >的两种解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!