【问题标题】:unable to see the output of c++ program in the console无法在控制台中看到 c++ 程序的输出
【发布时间】:2013-08-11 06:22:40
【问题描述】:

我已经在我的 windows 8 笔记本电脑上安装了 eclipse ide(cdt),并尝试编写一个简单的 c 程序来检查程序是否执行。

它没有执行并给出错误:binary not found

于是我在网上搜索了一下,发现我的系统没有安装 c/c++ 编译器。
所以我安装了 MinGW 并在安装过程中选择了 c 和 c++ 编译器。
然后我将 PATH 环境变量设置为 C:\MinGW。
我重新打开了 eclipse,写了一个简单的 c 程序,它按预期工作!

我创建了一个c++项目,写了一段简单的代码,在控制台看不到输出!

代码如下:

#include<iostream>
using namespace std;

int main()
{
    cout<<"sample text";
    return 0;
}

【问题讨论】:

  • 想通了:转到项目 > 属性 > C/C++ 构建 > 设置 > 工具设置(选项卡)> MinGW C++ 链接器(选项)> 添加命令(g++ -static-libgcc -static-libstdc++) (默认命令只有 g++)

标签: c++ eclipse mingw


【解决方案1】:

链接器(选项)> 添加命令(g++ -static-libgcc -static-libstdc++)

这不是正确的解决方案。

您的路径环境变量中只有 c:\minGW
但它应该是 c:\minGW;c:\minGW\bin 。 (打开eclipse前设置PATH)

因此,无法找到当前程序所需的libstdc++-6.dll

在eclipse中没有错误,但是控制台没有输出!!

编译成程序可能被视为一种技巧,但只适用于标准库


您的链接器标志不应设置为:

--> MinGW C++ 链接器(选项)> 命令(g++ -static-libgcc -static-libstdc++)

应该在这里设置:


我知道在这种情况下,最后&lt;&lt; endl 没有必要写。
一个好的编程风格应该使用&lt;&lt; endl

cout << "sample text" << endl;

【讨论】:

  • 我按照您上面的解释进行了操作,并且有效。但你能解释一下这两种解决方案的区别吗?为什么你说我的第一个解决方案只适用于标准库?只是好奇...
  • 为什么 c 程序的输出在控制台中是可见的,而不是 c++ 程序的?
  • c 程序未链接到libstdc++-6.dll
  • 您的第一个解决方案仅适用于标准库。 libstdc++-6.dll 属于标准库,将与 -static-libstc++ 直接链接到您的 .exe 中,因此不需要运行 libstdc++-6.dll
  • 我刚刚意识到,在我实施了你提到的更改后,c++ 程序可以完美运行,但现在我看不到 c 程序的输出。非常不寻常的行为。我猜我需要更改 c 项目属性中的链接器。你能给我我需要添加的链接器吗?
【解决方案2】:

您可能只需要使用flushendl 刷新输出。试试这个:

cout<<"sample text" << endl;

cout<<"sample text" << flush;

【讨论】:

  • 并不总是需要。似乎还有其他问题
  • 如果你使用 64 位版本的 eclipse,可能会有 bug 见here
猜你喜欢
  • 2018-08-02
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多