msys2 g++ - 找不到入口点

msys2 g++ - Entry Point Not Found

我按照this tutorial安装了msys2和gcc。但是,当我在 C:\msys64\mingw64\bin\ 中使用 g++.exe 时,编译后我无法 运行 以下程序:

#include <deque>
int main() {
        std::deque<int> d;
        d.push_back(1);
        return 0;
}

错误 The procedure entry point _ZSt28__throw_bad_array_now_lengthv could not be located in the dynamic link library。但是以下程序运行良好:

#include <iostream>
int main() {
        std::cout << "hi" << std::endl;
        return 0;
}

我也试过在 C:\msys64\usr\bin 中使用 g++.exe,在这种情况下我得到了一个错误 0 [main] cc1plus (8892) C:\msys64\usr\lib\gcc\x86_64-pc-msys.2.0\cc1plus.exe: *** fatal error - cygheap base mismatch detected - 0x180349408/0x180347408. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL. 这看起来真的很奇怪。我重新启动了一次计算机,但问题仍然存在。提前感谢任何帮助。

问题是与 cygwin1.dll dll 的 dll 冲突。在 OS PATH 环境变量的文件夹之一中,您可能有一个与应用程序所需名称相同的 dll,它是所需 dll 的不同版本,或者不太可能是具有相同名称的不同 dll。

冲突也可能在您 OS 搜索的其他文件夹之一中。这篇 MSDN 文章描述了 Windows OS 如何定位所需的 dll:https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#search-order-for-desktop-applications