在 DLL(文件路径)中找不到入口点(_ZSt28__ throw_bad_array_new_lengthv)

Pen*_*oti 5 c++ gcc mingw-w64 msys2

错误

确切的错误是问题的标题。 错误的图片。

当我使用vectorName.push_back()函数时会发生这种情况。我用这个简单的代码重新创建了它:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector <int> vec = {};
    vec.push_back(2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器和设置信息

我正在使用msys2 ,并使用本指南进行设置

我不知道这是否相关,但我在此之前使用过 tdm-gcc。

研究

几乎找不到修复方法,或者我只是没有仔细寻找。我找到了一些关于 的帖子_ZSt28__throw_bad_array_new_lengthv,但没有找到入口点。因为我没有找到任何关于这个确切问题的信息,所以我没有尝试任何事情。

Jef*_*rey 7

问题:“无法在动态链接库中定位过程入口点_zst28__throw_bad”

(使用 msys2 mingw64)

解决办法:修改系统环境变量(需要admin权限)

以管理员身份启动 Windows 命令行 (cmd.exe)(右键单击以管理员身份运行)。然后输入这个命令:

"C:\Windows\system32\rundll32.exe" sysdm.cpl,EditEnvironmentVariables
Run Code Online (Sandbox Code Playgroud)

然后编辑底部的 PATH(在 Systemvariables 下),并确保 C:\msys64\mingw64\bin 位于顶部位置

完毕。

在cmd中检查如下:

echo %PATH%
Run Code Online (Sandbox Code Playgroud)

您还可以从 cmd 非持久地编辑 PATH,如下所示(也不需要管理员权限):

set PATH=C:\msys64\mingw64\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Run Code Online (Sandbox Code Playgroud)