You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用vector.push_back时出现DLL入口点_ZSt28__throw_bad_array_new_lengthv找不到错误

解决“无法找到入口点_ZSt28__throw_bad_array_new_lengthv”问题

问题根源

_ZSt28__throw_bad_array_new_lengthv是GNU C标准库中负责抛出std::bad_array_new_length异常的函数。你遇到的入口点缺失问题,核心原因是**编译时使用的MSYS2 GCC版本,与运行时加载的C标准库DLL版本不匹配**——由于之前用过TDM-GCC,系统环境或VS Code配置中可能残留了旧版本库的引用,导致程序运行时找不到对应符号。

复现代码

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector <int> vec = {};
    vec.push_back(2);
    return 0;
}

解决方案

1. 清理系统环境变量

  • 打开系统环境变量设置,找到PATH变量,移除所有TDM-GCC相关的路径(例如C:\TDM-GCC-64\bin)
  • 将MSYS2对应架构的GCC路径移到PATH最前端:
    • 64位环境:C:\msys64\mingw64\bin
    • 32位环境:C:\msys64\mingw32\bin

2. 修正VS Code的C++配置

  • 打开项目下的.vscode/c_cpp_properties.json,确保配置指向MSYS2的GCC示例:
    {
        "configurations": [
            {
                "name": "Win32",
                "compilerPath": "C:/msys64/mingw64/bin/g++.exe",
                "includePath": [
                    "${workspaceFolder}/**",
                    "C:/msys64/mingw64/include/c++/13.2.0",
                    "C:/msys64/mingw64/include"
                ],
                "browse": {
                    "path": [
                        "${workspaceFolder}/**",
                        "C:/msys64/mingw64/include/c++/13.2.0",
                        "C:/msys64/mingw64/include"
                    ]
                },
                "cppStandard": "c++17"
            }
        ],
        "version": 4
    }
    
    注意替换路径为你实际的MSYS2安装路径和GCC版本

3. 完全重建项目

  • 删除之前编译生成的可执行文件、.o中间文件
  • 打开MSYS2对应架构的终端(Mingw64或Mingw32),重新编译代码:
    g++ -std=c++17 main.cpp -o main.exe
    
    运行编译后的程序:./main.exe

4. 验证依赖库

  • 在MSYS2终端中执行以下命令,检查程序依赖的标准库:
    ldd main.exe
    
    确认输出中libstdc++-6.dll的路径指向MSYS2的mingw64/bin或mingw32/bin,而非TDM-GCC的路径。

内容的提问来源于stack exchange,提问作者Penzboti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:55:09