CLion编译的exe在Windows闪退或报libgcc_s_dw2-1.dll缺失,根本原因是默认动态链接GCC运行时;需在CMakeLists.txt中project()后添加set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")并重载CMake项目。

CLion 编译出来的程序在 Windows 上双击就闪退,或者报 libgcc_s_dw2-1.dll 找不到、ZSt28_throw_bad_array_new_lengthv 入口缺失这类错误,根本不是代码问题——是链接时默认用了动态 GCC 运行时,而目标机器没装 MinGW 环境。
运行按钮灰色:CMake 没加载成功
按钮变灰 ≠ 代码写错了,而是 CLion 根本没生成可执行目标。最常见原因是 CMakeLists.txt 加载失败或配置不完整。
- 打开
View → Tool Windows → CMake,看窗口里有没有红色错误(比如找不到 toolchain、project()语法错、路径含中文) - 检查
CMakeLists.txt是否包含合法的project()和add_executable(),且两者名称一致 - 如果刚克隆项目或重装 CLion,先试
File → Invalidate Caches and Restart → Invalidate and Restart,强制重新解析 CMake 配置 - 确认 CMake profile 里选的是有效的工具链(如 MinGW 或 Visual Studio),而不是
None或灰色不可用项
exe 双击闪退或报 dll 缺失
这是 Windows 下最典型的静态链接缺失问题。CLion 默认用 MinGW 编译,生成的 exe 依赖 libgcc 和 libstdc++ 动态库,但这些库不会随 exe 自动分发。
- 在
CMakeLists.txt顶部(project()之后)添加:set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
- 不要加
-static全局静态链接,它会强行静态链接所有库(包括 WinAPI),反而导致兼容性问题 - 改完保存后,点击 CMake 工具窗口右上角的
Reload project按钮(小循环图标),否则改动不生效 - 重新构建,生成的 exe 就能脱离 MinGW 环境独立运行
运行配置为空或报“no executable target”
即使 CMake 加载成功,CLion 也可能找不到可运行的目标——因为没创建或识别出正确的 Run Configuration。
- 点击右上角绿色三角形旁边的下拉箭头 →
Edit Configurations… - 左侧选
Add New Configuration(+ 号)→ 选C/C++ Executable - 在
Executable栏点击…,导航到cmake-build-debug/(或cmake-build-release/)目录,选中你的.exe文件 - 确保
Target下拉菜单里显示的是你项目中定义的 target 名(和add_executable()第一个参数一致) - 如果列表为空,说明 CMake 没把 target 注册进 IDE,回到上一步检查
CMakeLists.txt是否漏了add_executable()
最容易被忽略的一点:CLion 的 CMake 解析是 lazy 的——它只在你打开 CMake 工具窗口、点击 Reload、或修改 CMakeLists.txt 后才真正重新跑 configure 步骤。改了配置却不触发 reload,等于什么都没做。


















