目录

1,错误描述

2,解决办法

3,一种特殊情况


1,错误描述

C++程序编译阶段有个常见的错误,std::__cxx11::basic_***,可能是string,list等,也许程序在其他环境完成编译,在运行环境报错,也许是正在编译阶段报错。

简单来说,这个错误的原因是因为C++不同版本对string、list的定义不同。比如Ubuntu环境,如果程序或依赖编译时版本和运行时gcc/g++版本不一致,就会报这个错误。

2,解决办法

  1. 通过升级或降级编译器版本,使编译环境和运行环境一致。
  2. 把源码放到实际运行环境重新编译。
  3. 在cpp文件使用宏 _GLIBCXX_USE_CXX11_ABI=0,禁用C++11特性

3,一种特殊情况

       有时,使用Visual Studio Code编译C++程序,如果task.json文件引用参数配置不正确,也会报这个错误,只需要在配置文件中加入.h文件和.cpp文件路径即可。

        如下,args参数的 “-I”(大写i)部分。

{
    "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"
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐