记录两个 WIN11 下使用 mingw-make 碰到的离谱环境错误

发布于

# 1. mingw32-make.exe: *** INTERNAL: readdir: Invalid argument

该错误没有找到具体的根因,只知道解决方案:

修改环境变量,删除或者将 `Microsoft Store` 的环境变量移动到最后。

# 2. CreateProcess(xxx.bat, xxx.bat, ...) failed.

mingw32-make.exe 在 WIN11 上执行 gcc 命令的时候,会将 gcc 命令封装成一个 bat 脚本执行。

当时非常迷惑的原因是:

手动调用 cmd,并在 cmd 中执行该 bat 脚本,执行正常,一旦涉及到使用 Makefile,CreateProcess 这个 API 就会执行失败。

该问题的主要原因是: WIN11 下的 `C:\Windows\SysWOW64` 下的 cmd.exe 丢了,但是 `C:\Windows\System32` 下的 cmd 还在。AI 给出的解释是由于 mingw32-make.exe 是 32 位的程序,会被 windows 加载到 64 位环境下执行,但是 64 位环境 (`C:\Windows\SysWOW64`) 下没有 cmd.exe,所以报错。(windows 的报错友好度真的低,忙了一晚上定位出来这个坑爹的环境问题)

---

原文链接:[点击查看](https://www.v2ex.com/t/1234970)

评论(3)

第一个问题是不是因为MS Store里进了一些奇怪的东西?

· 0 个赞

mingw真的是个无底洞,早点上WSL吧,快点摆脱这个浪费生命的情况(除非你乐意折腾)

· 0 个赞

回复

@HankAviator 现在的需求,其实是给类似使用PLC上位机的用户提供C函数编码的功能……

· 0 个赞

0.050545s