使用 MinGW 的 Eclipse CDT 不在控制台中输出

Posted

技术标签:

【中文标题】使用 MinGW 的 Eclipse CDT 不在控制台中输出【英文标题】:Eclipse CDT using MinGW does not output in console 【发布时间】:2011-03-27 11:23:23 【问题描述】:

我有一台 Windows 7 64 位 PC,我正在尝试安装免费的 C++ IDE,因此我选择使用 CDT 安装 Eclipse Helios

对于 g++、make 和 gdb,我根据本教程安装了 msys 和 mingw: http://wiki.wxwidgets.org/HowTo:_Install_MSYS_and_MinGW_for_use_with_Eclipse_CDT

版本是:

make: GNU make 3.81 g++:4.5.0 gdb:7.1

所以它应该与我的 64 位 CPU 兼容。

但是,当我尝试使用 eclipse 运行一个非常简单的程序时,我在控制台上什么也看不到。源代码为:

#include <iostream>

 using namespace std;

 int main()
 
    int i;

    cout << "Enter an integer: " << endl;
    cin >> i;
    cout << endl << "i is " << i << endl;

    return 0;
 

构建很好,当我使用命令(Windows 控制台)启动 .exe 时,行为符合预期。 但是使用 Eclipse 控制台,我看不到运行和调试的输出只是: “输入一个整数:”,然后当我输入一个数字并按 Enter 时,它什么也不做。

请问有人知道怎么解决吗?

谢谢,

纪尧姆

PS:我使用工具链“Linux GCC”,而“MinGW GCC”在控制台中什么都没有。

【问题讨论】:

在 Indigo 32 位上遇到同样的问题; purlogic 的解决方案奏效了。 【参考方案1】:

这对我使用 MinGW 在 Windows 7 上安装 64 位 Eclipse 有效:

右键单击您的项目。选择“属性”。

选择新窗口左侧的“运行/调试设置”属性。

在右侧窗口中,单击要突出显示的可执行文件(即 - Test.exe),然后单击“编辑”。

在环境选项卡中,点击“新建”

名称:路径 值:MinGW bin 目录的路径。 (对我来说这是:C:\devcore\MinGW\bin

在所有窗口上单击“确定”关闭。

再次尝试运行,它应该将输出打印到屏幕上。

【讨论】:

太棒了!你是怎样找到它的?你是错误的创造者吗? :-) 在调试模式下它让我很困惑,命令它很好。 +1 非常感谢您找到解决此问题的方法 :) 这应该是正确答案,不用重新安装eclipse!! 它对我有用,令人惊讶的是我添加了已经在 windows 环境中设置了这个 PATH 变量,但它仍然没有工作。 @Ivan:完全同意你的看法。这应该是正确答案!! cygwin 也为我工作:)【参考方案2】:

您需要设置链接器 我正在使用 MinGW。

按照以下步骤操作。

Goto Project > Properties > C/C++ Build > Settings > Tool Settings (Tab) > MinGW C++ Linker (Option) > Add Command (g++ -static-libgcc -static-libstdc++)   (default command is only g++)

【讨论】:

在我的例子中,上述步骤实际上是阻止 Eclipse 构建二进制文件。【参考方案3】:

purlogic 的解决方案有效。 而不是为每个项目设置它,我发现它可以全局设置:

在窗口中 -> 首选项-> C/C++ -> 构建 -> 环境 为您的编译器添加一个变量。例如,我补充说: MINGW,值为“C:\MinGW\bin”

【讨论】:

我这样做了,有时有效,有时无效。我正在使用 Eclipse Juno。 那么purlogic的解决方案在哪里?!好像没找到【参考方案4】:

在 64 位版本的 eclipse 中发现了这个控制台错误:

http://www.eclipse.org/forums/index.php?t=msg&th=197552&start=0&S=2a2b64e1f1404705c0214976bd477428

解决方法是安装 32 位 eclipse

【讨论】:

在 Indigo 32 位中也可能发生 - 尝试下面的 purlogic 解决方案。【参考方案5】:

我遇到了同样的问题,因为在一台 PC 上安装了多个 gcc。但Greg's solution 只对我有部分作用。

在我的情况下,刷新没有在应用程序中明确完成。虽然 C++ 程序经常使用std::cout &lt;&lt; ... &lt;&lt; std::endl,其中endl 进行刷新,但我的程序使用了实际的C 输出,例如通常的printf。在 cmd 窗口中启动程序时可以直接看到 printf。但是在 Eclipse 控制台中,它们丢失了。因此,一个

fflush(stdout);

printf 为我做了这件事之后。这可能是 Eclipse 控制台实现中的一个问题。我想这就是为什么修复路径对这里的某些人不起作用的原因。

替代在“运行”设置中设置 PATH 的替代解决方案是使用批处理文件启动整个 eclipse,它基本上看起来像这样:

set PATH=<mymingwlocation>\bin;%PATH%
start <myeclipselocation>\eclipse.exe

那么默认情况下,任何运行配置都会使用正确的 MingW 位置。这也可能解决使用错误 gcc 可能引起的其他问题。

【讨论】:

fflush(stdout) ---- 是关键。工作得很好。谢谢!【参考方案6】:

您是否尝试过以管理员权限执行 eclipse.exe?它对我有用!

【讨论】:

【参考方案7】:

在 64 位/32 位 eclipse Kepler CDT 上使用 MinGW 构建 openCV/wxWidgets 工具 Win7 时遇到此问题。

如果有人在遇到此问题并使用 openCV 时遇到此问题,您就会知道互联网上有许多过时的 openCV 构建/安装说明。

我有一个是去构建设置->链接器->杂项并在链接器标志文本输入框内,输入 -Wl,--subsystem,windows -mwindows 但是,这会禁止 cout 输出到 Windows 中的命令行终端。

做更多的挖掘这看起来是有意的,显然 -mwindows 涉及将 STDOUT 从命令行专门引导到类似 GUI 的应用程序。

此外,删除-mwindows 并留在-Wl,--subsystem,windows 中同样可以完成重定向STDOUT 的任务,使其远离命令行。

现在请注意,除了涉及 wxWidgets 和 openCV 的 hello world 程序之外,我还没有构建任何东西,所以我还没有在 GUI 的一部分中做 cout,所以我不知道是否该功能现在将被破坏,或者如果它会打印到 GUI 对象以及命令行终端。

【讨论】:

【参考方案8】:

或者设置链接器选项-static。 至少对我有用。

【讨论】:

【参考方案9】:

通过运行 -> 运行配置 -> 在环境选项卡中将 PATH 变量(PATH="您的 MinGW/bin 目录路径")添加到您的 C++ 项目中

【讨论】:

以上是关于使用 MinGW 的 Eclipse CDT 不在控制台中输出的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse cdt mingw配置记录

带有 MinGW GCC 的 Eclipse CDT 生成错误 127

安装/使用 dlib 以与 Eclipse CDT、MinGW 和 OpenCV 一起使用时出错

windows 下 用eclipse开发c,不在同一目录下的头文件怎么引入?

Eclipse CDT 找不到 Cygwin 或 MinGW 工具链

使用 Eclipse + CDT + MinGW32 开发 C++ Socket 程序找不到库文件和头文件