使用Windows和MinGW在Eclipse中编写的C ++程序无法显示输出到控制台视图

时间:2011-05-11 06:01:08

标签: c++ eclipse console eclipse-cdt

我正在使用Windows 7 64位。

我安装了eclipse版本3.6.2,cdt和MinGW。我在Eclipse中有一个C ++控制台程序,如下所示:

#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    setbuf(stdout, NULL);

    for (int i = 0; i < 10000000; i++) {
        cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    }
    int val;
    cin >> val;

    return 0;
}

如果我运行此控制台程序,它应该在Eclipse中向控制台视图显示Hello world,但不显示任何内容。

如果我转到调试文件夹并运行exe,它会打印到控制台。

如果我犯了一些语法错误,那么Eclipse Console View将显示一些内容,例如:

**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\hh.o ..\src\hh.cpp
..\src\hh.cpp: In function 'int main()':
..\src\hh.cpp:17:3: error: expected ';' before 'return'
Build error occurred, build is stopped
Time consumed: 255 ms.   

为什么Eclipse控制台视图中没有显示任何内容以及如何使我的C ++控制台程序显示输出?

13 个答案:

答案 0 :(得分:22)

我从这个网站找到了一个解决方法:      http://www.eclipse.org/forums/index.php?=42e862594001fa4469bbc834885d545f&t=msg&th=197552

在该链接上,查看“无实名”的回复。

如果链接出现故障,请输入以下内容:

Environment: jdk1.6u18 64bit + Eclipse Helios 64bit + win7 64bit

No console output at "Run", but output correctly at "Debug".

The following method worked for me:

1.  Goto Project->Properties->Run/Debug Settings, choose the .exe file 
and press "Edit"

2.  In the "Environment" tag, press "New", set it as: 
    "Name:PATH"
    "Value:C:\MinGW\bin"

In fact, I have already set "C:\MinGW\bin" in windows PATH environment 
variable, but it seemed to not work.

答案 1 :(得分:4)

问题是你的程序使用MinGW的dll库 - 尝试手动启动exe文件,它会报告一些关于缺少dll的错误。

解决方案可以是,将所需的dll复制到项目目录中的.exe文件(以及Release或Debug子目录,取决于您使用Run命令执行的.exe)。

或者,在菜单中运行 - &gt;运行配置选择用于该.exe文件的配置(或创建新的C / C ++应用程序配置),然后在右侧面板中选择环境选项卡。添加名为 PATH 的新变量,其值为 c:\ MinGW \ bin (这是mingw \ bin目录的默认路径,如果它位于其他位置,请使用对您的安装有效的路径)
编辑:现在我正在查看Vikyboss的帖子,它实际上是相同的 - 在运行配置中设置PATH变量。在首选项&gt;中设置PATH变量C / C ++(展开它)&gt; Sydraps描述的环境对我不起作用。

但我认为静态链接库可能是最适合您的解决方案。在菜单项目 - &gt;属性选择 C / C ++ Build - &gt;设置的。在右侧面板中选择要更改的配置(可以选择全部)。在选项卡工具设置中选择 MinGW C ++ Linker - &gt;其他并在链接器标记的右侧面板中键入 -static 。现在.exe会因库的大小而膨胀(在我的情况下,对于Hello world示例大约需要+ 900kB,需要2个dll),但它在任何库中都是独立的。

我希望这对尝试使用Eclipse C / C ++的人有所帮助,并想知道为什么控制台中没有Hello世界。 Ales Chlubny

答案 2 :(得分:3)

我在Windows 7 x64 PC上解决了这个问题。在Eclipse窗口中,转到Preferences&gt; C / C ++(展开它)&gt;环境&gt;添加:

"Name:PATH"
    "Value:C:\MinGW\bin"

如果这不能解决问题。尝试将以上内容添加到计算机上的PC上的系统环境变量&gt;高级系统设置

答案 3 :(得分:2)

我找到原因,只是因为我正在使用64位日食!

我转向32位eclipse,相同的代码工作正常。

答案 4 :(得分:2)

当我以管理员身份运行eclipse时,解决了在控制台中显示hello world(64位Windows7)的问题。

我将C:\MinGW\bin添加到环境变量路径,然后以管理员身份启动eclipse

答案 5 :(得分:1)

我从Eclipse向导创建了一个Hello World C ++项目(MinGW GCC)应用程序,剪切并粘贴了您的代码,编译得很好。然后在运行之前我将循环减少到10并且运行正常。

您没有说明您是如何创建项目的,但似乎您可能缺少某些包含指令或库路径。另外我没有看到需要包含或setbuf(stdout,NULL)。我还发现在进行故障排除时没有将整个命名空间纳入范围有用。而是这样做:     使用std :: cout;     使用std :: cin;

最后,每次用&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; ENDL;看起来有点矫枉过正,在字符串的末尾添加一个简单的\ n会更有效。  (我在Win 7 64位上做了所有这些 - 但我使用的是32位版本的Eclipse Galileo)

答案 6 :(得分:1)

如果您使用的是MinGW编译器,

  

添加-static-libgcc -static-libstdc++作为新的链接器标记   项目。此文本应添加到链接器标志字段中   可以通过右键单击项目中的新项目来找到   资源管理器并单击属性。在项目属性下,   展开C / C ++ Build菜单,然后单击Settings。在工具下   在Settings选项卡中,展开MinGW C ++ Linker菜单并单击   杂。将文本添加到链接器标志字段,然后单击   应用按钮。

http://orfe.princeton.edu/help/article-296

答案 7 :(得分:0)

对于我来说,安装32位版本的Eclipse(Indigo 3.7)和32位Java JDK / JRE不起作用。我使用 Eclipse CDT / User / FAQ

中更快的解决方案

引自Eclipse CDT/User/FAQ - Eclipse console does not show output on Windows

  

Eclipse控制台在Windows上不显示输出在Eclipse CDT中   Windows,正在运行或调试的程序的标准输出是完全的   缓冲,因为它没有连接到Windwos控制台,而是连接到   管。有关更多详细信息,请参阅错误173732。之后添加fflush调用   每个printf或在main的开头添加以下行   功能:

setvbuf(stdout, NULL, _IONBF, 0); 
setvbuf(stderr, NULL, _IONBF, 0);

答案 8 :(得分:0)

我的eclipse-cdt问题,新的C ++项目&gt; hello world(cygwin gcc),右键单击exe文件,运行为,控制台上没有显示任何内容。与c项目相同。

我看到我的eclipse版本已经是32位了。

我想出来了,这里是我的解决方案:

eclipse cdt中有几个编译配置文件:发布和调试。 eclipse cdt中的默认配置文件是debug。因此,使用“run as”启动exe不起作用,您应该使用“debug as”启动它。在我的情况下,我使用了最近安装了gcc的cygwin安装,但是还没有安装gdb。我不得不使用cygwin-setup在cygwin中安装gdb包。我使用“debug as”重新编写了exe,并且它有效。

我想使用发布配置文件而不是默认调试配置文件,重建也有效,我猜它与mingw环境相同。

答案 9 :(得分:0)

刚刚将C:\ MinGW \ bin添加到环境变量&#39;路径&#39;在Windows 7 64位。 现在Console输出消息

答案 10 :(得分:0)

我遇到了类似的问题。

环境:

  

jdk1.6u18 64bit + Eclipse Helios 64bit + win7 64bit

“Run”没有控制台输出,但在“Debug”处输出正确。

以下方法对我有用:

  1. 转到项目&gt;属性&gt;运行/调试设置

    选择.exe文件并按“编辑”

  2. 在“环境”标签中,按“新建”,将其设置为:

  3.   

    “姓名:PATH”

         

    “值:C:\ MinGW的\ BIN”

    事实上,我已经将“C:\ MinGW \ bin”设置为Windows PATH环境变量,但它似乎不起作用。

答案 11 :(得分:0)

通过Eclipse Kepler 64位管理员为我工作。

答案 12 :(得分:0)

如果有人感兴趣,我发现如何在Windows XP上永远修复它(可能在其他Windows版本中工作),而无需指定每个可执行文件的变量等等:

启动菜单&gt; RightClick 在MyComputer &gt; 属性&gt; 高级选项&gt; 环境变量

在&#34;用户变量&#34;领域,

  • 如果有一个名为PATH的环境变量,请选择修改并在 Value 字段的末尾添加此信息,以分号分隔:
  

<强> C:\ MinGW的\ BIN

     

实施例:   C:\ SomeDirectory; C:\另一个;的 C:\ MinGW的\ BIN

  • 如果环境变量PATH 不存在,请添加一个包含此信息的新文件:
  

名称:路径

     

值: C:\ MinGW \ bin

全部接受,你应该得到控制台输出:)