我也有这个问题 - 一个非常简单的终端程序,仅使用 stdio.h 和 string.h,往往会引发“代码执行无法继续,因为找不到 msys-2.0.dll。重新安装程序可能会解决这个问题问题。”在普通终端中。
最后,这篇文章帮助解决了这个问题 - 但有一些微妙的问题,我会在此说明。
现在,我的问题是:
我从安装 MSYS2 开始;显然我已经在其中安装了 GCC。
现在,即使我更改为 MINGW64 终端(而不是 MSYS2 终端)并重新编译,我也会遇到与 msys-2.0.dll 相同的问题。
最后,我想到了在 MINGW64 终端上签到:
user@DESKTOP MINGW64 /c/
$ which gcc
/usr/bin/gcc
请注意,这 - /usr/bin/gcc - 与返回的路径完全相同,如果您在 MSYS2 shell 中。
所以,我再次尝试在 MINGW64 shell 中查找 gcc:
$ pacman -Ss gcc
mingw32/mingw-w64-i686-gcc 7.4.0-1 (mingw-w64-i686-toolchain)
GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
...
mingw64/mingw-w64-x86_64-gcc 8.2.1+20181214-1 (mingw-w64-x86_64-toolchain)
GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
...
msys/gcc 7.4.0-1 (msys2-devel) [installed]
The GNU Compiler Collection - C and C++ frontends
...
啊哈,原来我没有安装mingw64 gcc - 我只安装了msys gcc!
所以,只需安装 mingw64 gcc - 当然是从 MINGW64(不是 MSYS2)外壳内部:
user@DESKTOP MINGW64 /c/
$ pacman -S mingw-w64-x86_64-gcc
resolving dependencies...
looking for conflicting packages...
Packages (7) mingw-w64-x86_64-binutils-2.30-5 mingw-w64-x86_64-crt-git-7.0.0.5302.6c8f5629-1
mingw-w64-x86_64-headers-git-7.0.0.5302.6c8f5629-1 mingw-w64-x86_64-isl-0.19-1
mingw-w64-x86_64-windows-default-manifest-6.4-3 mingw-w64-x86_64-winpthreads-git-7.0.0.5273.3e5acf5d-1
mingw-w64-x86_64-gcc-8.2.1+20181214-1
Total Download Size: 51.55 MiB
Total Installed Size: 364.04 MiB
:: Proceed with installation? [Y/n] y
...
在此之后,您需要关闭并重新打开 MINGW64 shell;一旦你这样做,你可以看到:
user@DESKTOP MINGW64 /c/
$ which gcc
/mingw64/bin/gcc
...现在 MINGW64 到 gcc 的路径是 /mingw64/bin/gcc - 而 MSYS2 中的路径仍然是 /usr/bin/gcc。
因此,如果我现在在 MINGW64 shell 中使用 gcc 编译,我使用 /mingw64/bin/gcc 编译,现在我生成的 .exe 可以在通常的 Windows 命令提示符下运行,而无需询问 msys-2.0.dll - 这是很棒:)