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

C++编译的exe程序无法在其他未安装编译器的电脑正常运行如何解决

问题原因与解决方案

DLL缺失问题

默认编译C程序时采用动态链接模式,生成的exe依赖C标准库的动态链接文件,没有安装对应编译器或运行库的电脑会缺少这些dll文件。
你使用-static参数的解法是正确的:开启静态编译后,所有依赖的库代码会直接嵌入exe,无需额外附带dll,可直接在无运行环境的电脑上运行。
如果使用MSVC编译器,对应静态编译设置为:项目属性→C/C++→代码生成→运行库选择/MT(Release版)或/MTd(Debug版)

程序运行2秒自动关闭问题

这是控制台程序的普遍现象:程序执行完所有逻辑后会直接退出,窗口随之关闭,用户无法看到最终输出内容。
可任选以下方法解决:

  • 在main函数return 0;前添加system("pause");,程序运行到此处会暂停,等待用户按任意键后再退出
  • 或添加std::cin.get();,效果一致,无需调用system函数更规范
  • 也可以让用户手动打开cmd窗口,将exe拖入cmd中运行,程序结束后cmd窗口不会自动关闭,可查看完整输出

代码可优化问题

你提供的代码存在几处潜在BUG,建议修复:

  1. 胜负判断逻辑错误:使用了赋值运算符=而非比较运算符==,会导致判断永远为真
    // 错误写法
    if (runs = target)
    // 正确写法
    if (runs == target)
    
  2. 数组越界访问:
    int faces[3] = {0, 1, 1}; 
    int flippedface = faces[rand() % 4]; // 数组长度为3,下标最大为2,模4会得到下标3导致越界
    // 改为rand()%3即可
    
  3. 重复设置随机种子:多个函数内重复调用srand(time(0)),time精度为秒,一秒内多次调用会得到相同种子,导致随机数重复,只需在main函数最开头调用一次srand(time(0))即可
  4. 数组初始化越界+赋值错误:
    int possibleturns[10] = {0, 0, 1, 2, 3, 4, 5, 6};
    possibleturns[9], possibleturns[10] = likelyturn; // 数组长度为10下标最大为9,访问10越界,且逗号运算符无法同时赋值两个元素
    // 正确写法
    possibleturns[8] = likelyturn;
    possibleturns[9] = likelyturn;
    
    makecomputerturnbowling函数内也存在相同的数组越界问题,需要将数组长度改为10后再给下标8、9赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:03