7

我编写了一个简单的 C++ 程序,我在命令提示符下使用 g++ 进行编译,并通过命令提示符运行它。我的程序代码如下:

#include<iostream>

int main() 
{
    std::cout<<"Hello world"<<std::endl;
    return 0;
}

当我运行这段代码时。我的办公室机器上出现“hello_world.exe 已停止工作”的错误。但是当我在家里运行相同部分的代码时,它工作得很好。知道为什么会这样吗?此外,如果我删除 std::endl 它工作正常。

我正在使用 Notepad++ 进行编码。

更新:我没有在两台机器上运行相同的二进制文件。我分别在两台机器上编译。我在这两个位置都使用 Windows 7 32 位。我正在使用mingw。对于编译,我输入“g++ hello_world.cpp -o hello_world.exe”。为了运行,我输入了“hello_world.exe”。我从 mingw.org 网站下载了 mingw,并使用“mingw-get-setup.exe”进行安装。我使用命令“mingw-get install gcc g++”通过命令提示符安装了g++和gcc。

4

3 回答 3

1

当您从 中返回时main(),您的程序将停止工作。在基于 gui 的环境中,我不会惊讶地看到关于基于终端的应用程序已完成的弹出消息警告,其中用户必须在终端生成以支持应用程序之前单击“关闭”以终止以及终止. Windows 9x 曾经在 MS-DOS 程序的启动器首选项中有这样的复选框。

您应该用来找出问题的问题是: - 如果您自己启动 shell,它是否显示相同的错误消息? - 你是否在两台机器上使用相同的二进制文件,如果是,你的机器是否都能够运行它(例如,不尝试在 32 位操作系统上启动 64 位二进制文​​件作为一种情况)

于 2013-09-30T13:14:54.303 回答
1

在使用 MinGW 的 Windows 7 32 位上工作正常。我怀疑您没有安装运行程序所需的所有组件。我会重新安装 MinGW 和 Msys,并确保安装所有必要的 C 和 C++ 组件。

g++ --version
g++.exe (GCC) 4.6.2

a.exe
Hello World

我在 Windows 上使用 MinGW 和 Msys 多年(几个不同的版本)并且从未遇到过编译、链接或执行标准 C 和 C++ 程序的问题。

于 2013-09-30T18:57:32.243 回答
1

这将有助于查看错误消息的确切文本。

您的程序依赖于 C 和 C++ 运行时库。我怀疑您将库安装在它工作的机器上,而没有安装在它不工作的机器上,可能是因为您在编写代码的机器上安装了 Visual Studio,而不是在您尝试运行它的机器上.

您可以通过在 Microsoft 下载中搜索 vcredist 来在第二台计算机上安装运行时库,以获取您编译程序时使用的 Visual Studio 版本。

于 2013-09-30T14:13:10.003 回答