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

Windows下MinGW编译C++程序静默崩溃实现方案咨询

让Windows下的C++程序静默崩溃不弹出错误对话框

方法一:通过Windows API直接禁用错误对话框

在程序启动阶段调用SetErrorMode函数,设置SEM_NOGPFAULTERRORBOX标志,就能阻止Windows在程序崩溃时弹出默认的错误提示框,进程会直接终止。

在你的main函数开头添加以下代码:

#include <windows.h>

int main() {
    // 禁用崩溃时的错误对话框,直接终止进程
    SetErrorMode(GetErrorMode() | SEM_NOGPFAULTERRORBOX);

    // 你的Web服务器初始化、运行逻辑
    return 0;
}

这里用GetErrorMode() | SEM_NOGPFAULTERRORBOX是为了保留原有错误模式的其他设置,避免覆盖系统默认的错误处理行为,仅新增禁用崩溃对话框的规则。

方法二:使用Manifest文件配置(无需修改代码)

如果不想改动程序代码,可以通过添加manifest文件让Windows自动禁用错误对话框。

  1. 创建名为MyProgram.exe.manifest的文件,写入以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
            <ErrorReportingSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
                <DisallowErrorUI>true</DisallowErrorUI>
            </ErrorReportingSettings>
        </windowsSettings>
    </application>
</assembly>
  1. 编译时绑定manifest:用MinGW编译链接时,添加参数-Wl,--manifest=MyProgram.exe.manifest,或者直接把manifest文件放在生成的exe同目录下,Windows会自动加载该配置。

注意事项

  • 两种方法对MinGW编译的程序均有效,API方法更直接可靠,无需额外文件依赖。
  • 设置生效后,程序崩溃时会直接退出,不会弹出任何系统提示框,完全符合你依赖外部组件重启的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:10:41