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

MinGW c++.exe异常:CMake无法构建C++项目求解决方案

问题分析

错误核心是mingw32-make.exe: *** INTERNAL: readdir: Invalid argument,说明make工具在读取目录时出现异常。结合你的构建路径C:/Users/huntd/OneDrive - USU/Code/C++/Learning/Post_Transition/build/,大概率和OneDrive路径的特殊字符/同步冲突、旧版MinGW与新版CMake的兼容性有关。

解决方案

1. 转移项目到非OneDrive路径

将项目文件夹从OneDrive目录(如C:/Users/huntd/OneDrive - USU/...)移动到本地普通路径,比如C:/Code/C++/Post_Transition/,重新创建build目录后再运行CMake。

  • 原因:OneDrive路径包含空格、-等特殊符号,且实时同步可能干扰文件系统读取,导致mingw32-make的readdir系统调用失败。

2. 更换MinGW版本

你当前使用的GCC 6.3.0版本老旧,和CMake 3.28存在兼容性问题:

  • 卸载现有MinGW,下载安装MinGW-w64(支持64位系统的版本),推荐选择GCC 12.x或13.x等较新的稳定版本。
  • 安装时务必勾选mingw32-make组件,将MinGW的bin目录(如C:/mingw64/bin)添加到系统环境变量PATH最前端,避免和其他工具冲突。

3. 验证工具可用性

手动测试编译器和make工具是否正常工作:

  1. 打开命令提示符,输入c++ --version,确认能正常输出GCC版本信息。
  2. 创建简单测试文件test.cpp:
#include <iostream>
int main() {
    std::cout << "Hello" << std::endl;
    return 0;
}
  1. 用g++编译:g++ test.cpp -o test.exe,检查是否生成可执行文件并能正常运行。
  2. 手动测试make:创建Makefile文件:
all: test.exe
test.exe: test.cpp
    g++ test.cpp -o test.exe

运行mingw32-make,若这一步出错,说明make工具本身有问题,需重新安装MinGW。

4. 检查路径与权限

若坚持使用原路径:

  • 确保项目路径和build路径仅包含空格、-等常规符号,无中文或非ASCII字符。
  • 以管理员身份运行CMake或终端,避免权限不足导致目录读取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:47:05