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

如何在GitHub CI的Windows环境中运行Makefile编译的.exe程序?

解决GitHub Actions Windows CI中MinGW编译程序无法运行的问题

错误原因分析

你遇到的退出代码 -1073741511 对应Windows系统错误码 STATUS_DLL_NOT_FOUND,本质是编译后的可执行文件找不到依赖的动态链接库。Linux环境下静态链接或系统默认包含所需库,但Windows的GitHub Actions环境中,MinGW的运行时库(如libstdc++-6.dll、libgcc_s_seh-1.dll等)不在默认PATH里,导致程序启动失败。

解决方案

方案1:静态链接MinGW运行时库(推荐)

直接把依赖的运行时库打包进可执行文件,彻底避免DLL依赖问题。修改CI的编译命令,添加静态链接参数:

- name: compile tests
  run: make test CXX=g++ CXXFLAGS="-static-libgcc -static-libstdc++"

也可以在你的Makefile中,给CXXFLAGS默认加上这两个参数,确保所有编译场景都自动静态链接标准库。

方案2:将MinGW的bin目录加入系统PATH

如果不想静态链接,可以在运行测试前,把MinGW的二进制目录添加到PATH中,让系统能找到所需DLL:

jobs:
  windows:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v2
    - name: Add MinGW to PATH
      run: echo "C:/mingw64/bin" >> $GITHUB_PATH
    - name: compile tests
      run: make test CXX=g++
    - name: run tests
      run: make run_test

GitHub Actions的Windows环境中,MinGW通常安装在C:/mingw64路径下,若你的环境路径不同,可调整为实际路径。

额外检查点

  • 确认Makefile中EXTENSION变量在Windows环境下是否设置为exe,确保运行命令指向正确的可执行文件(比如$(OUTPUT_NAME).exe)。
  • 若程序依赖其他第三方DLL,也需要确保这些DLL和可执行文件在同一目录,或者其路径被加入PATH。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:42:29