【问题标题】:Can't execute compiled C++ exe file无法执行编译的 C++ exe 文件
【发布时间】:2016-04-09 23:35:46
【问题描述】:

我在执行 C++ 代码时遇到问题。我编写了一个基本的“Hello World”程序,并使用 g++ make 命令对其进行了编译。这是我的代码:

#include <iostream>

using namespace std; 

int main() {
  cout << "Hello World" << endl;
  return 0;
}

我在 Windows 10 上,使用 Emacs 进行代码编辑,使用 CygWin 进行编译。我将此文件保存为 hello.cpp。然后我导航到 CygWin 中的目录。然后我执行了命令make hello。这创建了 hello.exe。然后,我尝试使用./hello.exe 执行该文件。我也试过./hello,但也没有用。当我键入其中一个命令并按 Enter 时,它就在下一行,没有做任何事情。我可以输入这个空白行,但它不会做任何事情。有谁知道让我的代码正确执行的方法。谢谢。

编辑:我尝试在在线 C++ 编译器 cpp.sh 上运行它,它运行良好。

【问题讨论】:

  • 程序在windows命令提示符(cmd.exe)下运行的输出是什么?
  • @NoOrdinaryLove 与 CygWin 相同。
  • 尝试将输出重定向到文件。你好.exe > log.txt
  • @NoOrdinaryLove 在终端中的结果相同,当然,log.txt 为空。
  • 你在cygwin终端上用了什么命令?

标签: c++ g++ cygwin


【解决方案1】:

您的代码很可能正在执行,但没有输出任何内容。那是因为它失败了。在使用echo $? 运行后尝试检查返回值。如果不是0,那么它已经崩溃了。也可以在gdb 中运行它,看看它是否失败。它失败的原因很可能是 windows/cygwin 冲突 - 这不是你的代码。

【讨论】:

  • 我跑echo $?检查返回值,它说0,但是每次我运行程序我都必须重新启动CygWin,所以这个值可能不准确。我不知道如何在gdb 中运行它,虽然我已经安装了它。
  • 每次重新启动 shell 时,都会丢失 $? 的旧值。当你运行你的程序时,听起来甚至 shell 都在崩溃。
【解决方案2】:

您的程序可能正在运行,但在您看到任何内容之前控制台窗口正在关闭。

尝试在程序末尾添加一个输入,让它等待。

I.E.

int a;
cin >> a;

【讨论】:

  • 控制台窗口没有关闭。它保持打开状态,但最终我不得不关闭它,因为它不输出任何内容。
猜你喜欢
  • 2020-10-03
  • 2012-08-10
  • 2021-06-16
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
相关资源
最近更新 更多